JavaScript

Где я сделал ошибку в коде

до if(a = "") программа не дойдёт, но лучше там поставить ==
А что вообще должна делать функция?
Тилек Бектуров
Тилек Бектуров
74 998
Лучший ответ
Геннадий Ушаков возвращать true если есть нет повторяющихся букв в строке и false если есть и true если строка пустая
split для строк не нужен и дальше какая-то мешанина.

Можно вообще так:

function isIsogram(str) {
return new Set(str).size == str.length;
}
Вадим Матвеев
Вадим Матвеев
91 245
Дмитрий Ростовский Это все круто, но не приучайте новичков не думать. Им надо учиться писать самим алгоритмы. Видите, человек в простейшей задаче не понимает, что наделал и что надо сделать.
Евгений Кунгель У вас есть ошибка, вы не привели в нижний регистр буквы, и Сэт добавит как маленькую так и большую букву
Евгений Кунгель А вот насчет сплита для строк не знал, спасибо за информацию!
Ваш подход написания кода
устаревший и не безопасный.

1) var используется лишь в старых скриптах, его не убрали с языка лишь для того чтобы поддерживать старый код. Сейчас let, const
2) Вы используете условия без фигурных скобок при этом тело переносите на следующую строку.

Чтобы обновить знания можно воспользоваться javascript.info или его русским аналогом learn.javascript.ru
Виталий Шишков
Виталий Шишков
68 836
Геннадий Ушаков var нужен т. к например в функции мне нужно чтобы значение менялось во всей функции а не только в каком-то блоке например
Сплитить необязательно, строка индексируется сама по себе
Второй цикл неверный, не от 0, а от следующего за i и не до i, а до конца. Двойным циклом надо проверить совпадение любых двух символов.
Если не равно - сразу true возвращаете? Это бред. Первая пара неодинаковых символов - это не проверка на изограмму. Тут достаточно оставить одно условие - если равны - то вернуть false. А в конце вне циклов вернуть true.
Последнее условие на пустую строку надо проверить сразу вне цикла. И тут ошибка, одно = это присвоенине, а не сравнение.

isIsogram = (s) => {
if (s === '') {
return true;
}
for (let i = 0; i < s.length - 1; i++) {
for (let j = i + 1; j < s.length; j++) {
if (s[i] === s[j]) {
return false;
}
}
}
return true;
}
Роман Кожин
Роман Кожин
55 095
Геннадий Ушаков if(a == "")
return true;
for(var i=0; i<str.length; i++){
for(var c=i+1; c<str.length; c++){
if(str[i] == str[c])
return false;
if(str[i] != str[c])
return true;
}
}

так?