Запишите в новый массив элементы, значение которых начинается с цифры 1 или цифры 2.
Дан следующий объект:
let obj = { 1: 125, 2: 225, 3: 128, 4: 356, 5: 145, 6: 281, 7: 452, }; Запишите в новый массив элементы, значение которых начинается с цифры 1 или цифры 2. То есть у вас в результате получится вот такой массив: let arr = [ 125, 225, 128, 145, 281, ]; <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Тег IMG</title> </head> <body> <! - --> <script> let result = {}; let obj = { 1: 125, 2: 225, 3: 128, 4: 356, 5: 145, 6: 281, 7: 452, }; for (let key in obj) { console.log(obj[key][0]); key = String(obj[key]); if(key[0]==1 || key[0]==2) { document.write(obj[key]); } } console.log(result); </script> </body> </html> Просьба не давать готовый код решения. Скажите как мне через консоль проверить чтоб был первый элемент в значении console.log(obj[key][0]);? |
console.log((''+obj[key])[0])
|
Цитата:
Цитата:
|
Цитата:
|
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Тег IMG</title> </head> <body> <! - --> <script> let result = {}; let obj = { 1: 125, 2: 225, 3: 128, 4: 356, 5: 145, 6: 281, 7: 452, }; for (let key in obj) { key = String(obj[key]); if((''+obj[key])[0])==1 || (''+obj[key])[0])==2) { document.write(obj[key]); } } console.log(result); </script> </body> </html>не работает. Просьба не давать готовый код . Указать ошибку |
Цитата:
Разберитесь со скобками в if. Цитата:
''+obj[key] - переводим это число в строку (''+obj[key])[0] - берем первый символ строки |
Сами себе объясните, что у вас делает key = String(obj[key]);
|
Цитата:
|
Цитата:
for (let key in obj) { В цикле key будут строками - '1', '2', '3'.... obj[key] - числа - 125, 255, 128... Вы переводите их в строки, т.е key будет '125' , '255'... А потом в if берете obj[key] - это что будет? И вообще, научитесь пользоваться средствами разработчика, которые есть в любом браузере. Там есть и отладчик. Тогда меньше будет глупых вопросов по поводу глупых ошибок. |
как в этом примере мне использовать отладчик?
|
javascript888,
String(obj[key]) это тоже самое(почти) что (''+obj[key]) пост #1 исправить строку 13 и 22 и будет вам счастье! |
javascript888, тебе нужно ещё раз ВНИМАТЕЛЬНО перечитать тему по поводу областей видимости и по поводу обращения к элементам строк.
К первой цифре (элементу) числа ты не сможешь обратиться - так как это ЧИСЛО, а вот к первому элементу СТРОКИ - сможешь! Вот поэтому и делается перевод числа в строку. |
javascript888, первоначально код у тебя был console.log(result) - в то время как объект(кстати, почему объект, если просят записать полученные значения в МАССИВ, а массив это в квадратных скобках [ ], а не в фигурных { } ) result остался не заполненным, а значит - вывелся пустой объект( массив), который кроме как в начале нигде больше не фигурирует и не задействован.
|
javascript888,
console.log((''+obj[key])[0]) - буквально значит вывести в консоль каждый первый символ строк, которые в объекте. Ведь если пустые кавычки(а это всегда нулевое СТРОКОВОЕ значение) приплюсовать к числовому - то всегда победит строковое. Кстати, данная запись - это вариант перевода к строке в обход метода String() . А ранее в if ты задавал условие вывода только тех значений в объекте, которые начинаются на 1 или 2. А вместо document.write(obj[key]),тебе скорее всего нужно написать result.push(obj[key]) - тебе же нужно найденные значения в новый массив записать, так ведь? И уже командой console.log(result) - ты выведешь в консоль новый массив с нужными значениями. Надеюсь, я понятно и подробно ответил тебе. :thanks: У тебя вся проблема кроется в недостаточном изучении простой теории из учебника. Я уверен, что на форуме ребята опытные и всегда подскажут и посоветуют, но знать теорию за тебя никто не сможет.)) |
Часовой пояс GMT +3, время: 03:40. |