Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запишите в новый массив элементы, значение которых начинается с цифры 1 или цифры 2. (https://javascript.ru/forum/misc/82898-zapishite-v-novyjj-massiv-ehlementy-znachenie-kotorykh-nachinaetsya-s-cifry-1-ili-cifry-2-a.html)

javascript888 31.07.2021 21:21

Запишите в новый массив элементы, значение которых начинается с цифры 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]);?

voraa 31.07.2021 22:09

console.log((''+obj[key])[0])

рони 01.08.2021 07:24

Цитата:

Сообщение от javascript888
вот такой массив:

Цитата:

Сообщение от javascript888
result = {};

:-?

javascript888 01.08.2021 08:19

Цитата:

Сообщение от voraa (Сообщение 539048)
console.log((''+obj[key])[0])

получилось. объясни пожалуйста почему именно так?

javascript888 01.08.2021 08:23

<!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>
не работает. Просьба не давать готовый код . Указать ошибку

voraa 01.08.2021 08:42

Цитата:

Сообщение от javascript888
не работает. Просьба не давать готовый код . Указать ошибку

Изучите, как записываются комментарии в HTML
Разберитесь со скобками в if.

Цитата:

Сообщение от javascript888
объясни пожалуйста почему именно так?

obj[key] - число
''+obj[key] - переводим это число в строку
(''+obj[key])[0] - берем первый символ строки

voraa 01.08.2021 08:46

Сами себе объясните, что у вас делает key = String(obj[key]);

javascript888 01.08.2021 09:18

Цитата:

Сообщение от voraa (Сообщение 539059)
Сами себе объясните, что у вас делает key = String(obj[key]);

Я перевожу цифру в строку

voraa 01.08.2021 11:17

Цитата:

Сообщение от javascript888
Я перевожу цифру в строку

Какую цифру и зачем?
for (let key in obj) {
В цикле key будут строками - '1', '2', '3'....
obj[key] - числа - 125, 255, 128...
Вы переводите их в строки, т.е key будет '125' , '255'...
А потом в if берете obj[key] - это что будет?

И вообще, научитесь пользоваться средствами разработчика, которые есть в любом браузере. Там есть и отладчик. Тогда меньше будет глупых вопросов по поводу глупых ошибок.

javascript888 01.08.2021 11:29

как в этом примере мне использовать отладчик?

рони 01.08.2021 15:21

javascript888,
String(obj[key]) это тоже самое(почти) что (''+obj[key])
пост #1 исправить строку 13 и 22 и будет вам счастье!

Gm5 01.08.2021 20:25

javascript888, тебе нужно ещё раз ВНИМАТЕЛЬНО перечитать тему по поводу областей видимости и по поводу обращения к элементам строк.
К первой цифре (элементу) числа ты не сможешь обратиться - так как это ЧИСЛО, а вот к первому элементу СТРОКИ - сможешь! Вот поэтому и делается перевод числа в строку.

Gm5 01.08.2021 20:37

javascript888, первоначально код у тебя был console.log(result) - в то время как объект(кстати, почему объект, если просят записать полученные значения в МАССИВ, а массив это в квадратных скобках [ ], а не в фигурных { } ) result остался не заполненным, а значит - вывелся пустой объект( массив), который кроме как в начале нигде больше не фигурирует и не задействован.

Gm5 01.08.2021 21:07

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.