Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с удалением анаграмм из массива (https://javascript.ru/forum/misc/66749-pomogite-s-udaleniem-anagramm-iz-massiva.html)

greyzak 08.01.2017 08:14

Помогите с удалением анаграмм из массива
 
Начал изучать JS. Вот делаю задание из учебника learn.javascript: удалить анаграммы из массива. Код написал. Вроде все работает. Только вот загвоздка: почему-то удаляет и гробик и киборг, с остальным нормально работает. Вопрос почему?
Другой код, который будет удалять все правильно, знаю. Вопрос именно в том почему здесь гробик и киборг удаляются вместе.
function aclean(arr){
	var tmpArr = [];
	var tmp;
	for (var i = 0; i < arr.length-1; i++){
		for (var j = i+1; j < arr.length; j++){
			if(arr[i].length != arr[j].length) continue;
			tmp = "";
			for (var a = 0; a < arr[i].length; a++){
				for (var b = 0; b<arr[j].length; b++){
					if(arr[i][a].toLowerCase == arr[j][b].toLowerCase){
						tmp += arr[i][a];
						break;
					}
				}
			}
			if(arr[i] == tmp){
				arr[i] = null;
				break;
			}
		}
	}
	for (i = 0; i < arr.length; i++){
		if(arr[i] !== null){
			tmpArr.push(arr[i]);
		}  
	}
	return tmpArr;
}
var arr = ["воз", "дома", 'икиборг', "киборг", "корсет", "ЗОВ", "мода", "гробик", 'гробики', "костер", "сектор"];
alert(aclean(arr));

рони 08.01.2017 09:26

greyzak,
строка 10 медитировать до просветления

greyzak 08.01.2017 16:42

Смедиритовал. Закачал скрипт на сайт и увидел, что он сравнивает киборг и корсет, и после этого собирает мне в tmp киборг. Получается что все буквы у них равны? В итоге увидел, что пропущены скобки у метода str.toLowerCase(). В итоге:

alert("к".toLowerCase); // Выводит код функции
alert("к".toLowerCase()); // Выводит результат функции
alert("к".toLowerCase == "о".toLowerCase); //true
alert("к".toLowerCase() == "о".toLowerCase()); //false

рони 08.01.2017 16:43

greyzak,
ок!


Часовой пояс GMT +3, время: 07:11.