Artyom M Ответов: 1

Мой цикл for не работает правильно


Привет всем!
Заранее хочу сказать, что я изучаю программирование , и вполне возможно, что я чего-то не понимаю из основ , так что моя проблема в том, что у меня есть цикл for и это для того, чтобы сортировать анаграммы, но его не работает код здесь - >

var arr = ["воз", "ЗОВ", "корсет", "киборг","киборг", "гробик", "костер", "сектор"]; /*array with elements in russian */
var arr2=[]; /* new array where we are going to write sorted elements (anagrams) from arr */

/*function sort(a,b){
	return a-b;
}*/
function clear (arr){
	var arr3=[];
for(var i = 0 ; i<arr.length ; i++){
arr3.push(arr[i].toLowerCase().split(''));
arr3[i].sort();
arr2.push(arr3[i].join('')); /* it sorts every element from arr by letters */
	}
	var sarr=[]; /* this is new array , because we need to write sorted elements here , but only one which contains same letters */
	
	next: 
	for(var i = 0 ; i<arr.length; i++){
		
		for(var j = 0 ;j<sarr.length ; j++ ){
			if(arr2[i]==sarr[j]) 
				continue next;
			
		}
		sarr.push(arr[i]);// ARR I
	}
console.log(sarr);
}

clear(arr);
console.log(arr)

поэтому, когда здесь "arr[i]", он записывает в массив sarr каждые 8 элементов(записывая в консоль), но когда здесь "arr2[i]", он записывает сюда только 3 уникальных элемента , почему он не работает правильно, Пожалуйста, скажите мне, я не понимаю . Это сработает
var arr = ["воз", "ЗОВ", "корсет", "киборг","киборг", "гробик", "костер", "сектор"]; /*array with elements in russian */
var arr2=[]; /* new array where we are going to write sorted elements (anagrams) from arr */

/*function sort(a,b){
	return a-b;
}*/
function clear (arr){
	var arr3=[];
for(var i = 0 ; i<arr.length ; i++){
arr3.push(arr[i].toLowerCase().split(''));
arr3[i].sort();
arr2.push(arr3[i].join('')); /* it sorts every element from arr by letters */
	}
	var sarr=[]; /* this is new array , because we need to write sorted elements here , but only one which contains same letters */
	
	next: 
	for(var i = 0 ; i<arr.length; i++){
		
		for(var j = 0 ;j<sarr.length ; j++ ){
			if(arr2[i]==sarr[j]) 
				continue next;
			
		}
		sarr.push(arr[i]);
	}
console.log(sarr);
}

clear(arr);
console.log(arr);

я пытался изменить это оба цикла, но ничего не работает, я пытаюсь решить эту проблему около 3-4 дней . Я знаю, как сделать это без этого обоих циклов, но я хочу знать, почему это не работает , мне интересно учиться , а не просто заставить это работать, если это неправильный путь, почему это неправильно?
Заранее спасибо !!!

Что я уже пробовал:

Я попытался изменить это без next: но он не работает, он дает мне 65 элементов, так что этот способ был неправильным ( извините, я не могу написать этот код снова, потому что я написал его пару дней назад.

1 Ответов

Рейтинг:
6

W∴ Balboos, GHB

Что ж, взгляните на то, как выполняются циклы for в javascript. И javascript, в общем, по этому адресу. JavaScript для цикла [^]

Подсказка 1: ваше использование слова "далее" очень и очень неправильно.


Artyom M

Спасибо за ваш ответ. Я уже знаю, что мой for работает неправильно , потому что я пишу в sarr значение из arr , а потом сравниваю значения из arr2 с arr , и это не будет равно , и не будет работать, потому что мое условие if было написано неправильно :) еще раз спасибо за внимание .