Не понимаю почему не работает for правильно? Здравствуйте !
Написал цикл , который должен сортировать массив с анаграммами и оставлять только уникальные элементы , но проблема в том что , когда я ставлю на запись в другой массив (sarr) одно значение он записывает а если с другого то нет , в данном случае выведет только 3 значения как и положеноvar arr = ["воз", "ЗОВ", "корсет", "киборг","киборг", "гробик", "костер", "сектор"];
var arr2=[];
/*function sort(a,b){
return a-b;
}*/
function clear (arr){
var arr3=[];
for(var i = 0 ; iarr3.push(arr[i].toLowerCase().split(''));
arr3[i].sort();
arr2.push(arr3[i].join(''));
}
var sarr=[]; /* сюда должны записываться уникальные элементы , уже отсортированные */

next:
for(var i = 0 ; i
for(var j = 0 ;j if(arr2[i]==sarr[j])
continue next;

}
sarr.push(arr2[i]); /*если здесь будет записано данное значение то он выведет 3 элемента но отсортированных в алфавитном порядке */
}
console.log(sarr);
}
clear(arr);
console.log(arr);["взо", "екорст", "бгикор"]
а в вот этом нет var arr = ["воз", "ЗОВ", "корсет", "киборг","киборг", "гробик", "костер", "сектор"];
var arr2=[];
/*function sort(a,b){
return a-b;
}*/
function clear (arr){
var arr3=[];
for(var i = 0 ; iarr3.push(arr[i].toLowerCase().split(''));
arr3[i].sort();
arr2.push(arr3[i].join(''));
}
var sarr=[]; /* сюда должны записываться уникальные элементы , уже отсортированные */

next:
for(var i = 0 ; i
for(var j = 0 ;j if(arr2[i]==sarr[j])
continue next;

}
sarr.push(arr[i]); /*если здесь будет записано данное значение то он выведет все 8 элементов несмотря на continur next*/
}
console.log(sarr);
}
clear(arr);
console.log(arr);["воз", "ЗОВ", "корсет", "киборг", "киборг", "гробик", "костер", "сектор"]
вроде бы когда выполняется continue next цикл не должен в принципе переходить туда , но этого не происходит . Пожалуйста объясните почему происходит так (интересно почему а не только решение ), и направьте на правильный путь , могу решить задачу другим методом но мне конкретно интересно почему происходит именно так , так как обучаюсь и хочу понять , чтобы в будущем не наткнуться на что то аналогичное .
Заранее спасибо !!!!

21 Авг 2019 в 06:24
182 +1
0
Ответы
1

Проблема здесь связана с тем, что вы используете метод continue с меткой next, который должен пропустить одну итерацию внешнего цикла. Однако, когда вы делаете continue next;, это приводит к переходу к следующей итерации внешнего цикла (for(var i...)), но при этом переменная i все равно увеличивается на 1, так как условие цикла не выполняется.

Это происходит потому, что в JavaScript оператор continue всегда пропускает только одну итерацию ближайшего цикла, но в вашем случае условие цикла for(var i...)) всё равно выполнится и переменная i увеличится на 1.

Чтобы исправить это, вам нужно изменить ваш подход к проверке на уникальность элементов. Можно создать объект, где ключами будут отсортированные строки, а значениями - сами строки. При проходе цикла добавлять значение в объект как ключ, и затем получить уникальные элементы из ключей объекта.

Надеюсь, это объяснение поможет вам понять, почему ваш код не работает как ожидается. Если у вас остаются вопросы, пожалуйста, дайте знать.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир