Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не работает код на js

MrKey8840 Мыслитель (8641), на голосовании 11 месяцев назад
 var list = {"Колумбия" : "Амазонка", "Египет" : "Нил", "Китай" : "Янцзы"} 
var list_2 = []
for (let i; i < list.length; i++) {
list_2[i] = list[i]
}
if (prompt() in list_2) {alert("Есть")}
else {alert("Нет")}
Я и6ал этот язык, что тут не так?!
Голосование за лучший ответ
Аркадий Паровозов спешит на помощь Мудрец (17883) 12 месяцев назад
Ваш код содержит несколько ошибок. Вот исправленный вариант:

var list = {
“Колумбия”: “Амазонка”,
“Египет”: “Нил”,
“Китай”: “Янцзы”
};

var list_2 = [];
for (const key in list) {
if (list.hasOwnProperty(key)) {
list_2.push(key);
}
}

const input = prompt();
if (list_2.includes(input)) {
alert(“Есть”);
} else {
alert(“Нет”);
}
_ Искусственный Интеллект (830071) 12 месяцев назад
Ошибка в коде заключается в использовании list.length в цикле for, когда list является объектом, а не массивом. В объектах нет свойства length, поэтому цикл for не будет работать корректно.
 var list = {"Колумбия" : "Амазонка", "Египет" : "Нил", "Китай" : "Янцзы"}  
var list_2 = []
for (let i = 0; i < Object.keys(list).length; i++) {
list_2[i] = list[Object.keys(list)[i]];
}
if (prompt() in list_2) {
alert("Есть");
} else {
alert("Нет");
}
В цикле for переменная i должна быть инициализирована значением 0: let i = 0;.
В условии цикла for нужно проверять длину массива ключей объекта list, а не list.length: i < Object.keys(list).length.
В строке list_2[i] = list[i] нужно использовать ключи объекта list для доступа к значениям: list[Object.keys(list)[i]].
MrKey8840Мыслитель (8641) 12 месяцев назад
Замело list.length на 3, всё равно не работает
MrKey8840Мыслитель (8641) 12 месяцев назад
*заменил
_ Искусственный Интеллект (830071) MrKey8840, Я тебе верный код прикрепил
Sergio 2.1 Оракул (66186) 12 месяцев назад
 var list = {"Колумбия" : "Амазонка", "Египет" : "Нил", "Китай" : "Янцзы"}  
var list_2 = {}
for (let i = 0; i < Object.keys(list).length; i++) {
list_2[Object.keys(list)[i]] = list[Object.keys(list)[i]]
}
if (Object.values(list_2).includes(prompt())) {alert("Есть")}
else {alert("Нет")}
Саня Семенов Оракул (60499) 12 месяцев назад
 var list = { 
"Колумбия": "Амазонка",
"Египет": "Нил",
"Китай": "Янцзы"
}
let keys = Object.keys(list), spell =
(s, i) => s.slice(0, -2) + ['ии', 'те', 'ае'][i]
if ((p = keys.indexOf(answ = prompt())) >= 0) {
alert(`Есть и в ${spell(answ, p)} течёт ${list[answ]}`)
} else {
alert("Нет")
}
//исправил ошибки работы с объектами и немного допилил сообщение до более-менее внятного
Semen Kapacuk Гуру (3732) 12 месяцев назад
Я и6ал этот язык
Получается, ты путаешь структуры данных и неправильно пользуешься синтаксисом в наиболее простых вещах, а виноват язык?
Похожие вопросы