Вход

Просмотр полной версии : Помогите с удалением анаграмм из массива


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,
ок!