С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98

Маленький JS код, а не работает

17.10.2017, 14:58. Показов 802. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Где проблема?

JavaScript
1
2
3
4
5
6
7
8
let colors = [ 'red', 'green', 'blue' ];
 
for( let value of colors.values()) {
    console.log( value );
}
 
// Консоль выдает
// Uncaught TypeError: colors.values(...) is not iterable
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.10.2017, 14:58
Ответы с готовыми решениями:

Маленький код а не работает
код из учебника, но что-то не то... A = * 1000 top = 0 x = int(input()) while x != 0: A = x top += 1 x = int(input()) ...

Объясните как работает код(маленький кусочек)
Суть задания - вывести, какие буквы и сколько раз встречались в веденном пользователем тексте(даю кусок кода). С помощью интернета смог в...

Как конвертировать (разобраться) маленький PHP код в «псевдо» код?
Доброго времени суток! Я отел бы разобраться в одном алгоритме который к сожалению написан на PHP синтаксис которого мне не ясен. Мог бы...

14
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 15:04
JavaScript
1
2
3
4
5
let colors = [ 'red', 'green', 'blue' ];
 
for( let value of colors) {
    console.log( value );
}
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 15:15  [ТС]
это поведение по умолчанию ( values() ).
меня интересует. почему не срабатывает явное указание итератора
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 15:24
Потому что у объекта типа Array нет никакого метода values(). Соответственно colors.values() возвращает undefined.
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 15:36  [ТС]
Возвращается не тип, а то что массив не итерабелен.

почему код ниже работает? ведь явно указан итератор, только другой.

JavaScript
1
2
3
4
5
6
7
8
9
let colors = [ 'red', 'green', 'blue' ];
for( let entry of colors.entries()) {
    console.log( entry );
}
 
// Консоль выдаст
// [0, "red"]
// [1, "green"]
// [2, "blue"]
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 15:42
Потому что у объекта типа Array есть метод entries(). Соответственно colors.entries() возвращает Array Iterator, а не undefined. Логично же.
https://developer.mozilla.org/... ay/entries
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 15:49  [ТС]
ну и зайдите теперь в раздел values() все тоже самое ))))) и даже пример кода приводится ))))
то что вы мне скинули это и есть поведение по умолчанию итератора values() = )))))
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 15:52
Смотрим внимательнее.
Миниатюры
Маленький JS код, а не работает  
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 16:01  [ТС]
а что тогда срабатывает в неявном указании?
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 16:06
В конструкцию "for ... of ..." необходимо передать итерируемый объект. Объект colors в вашем случае является объектом типа Array (обыкновенный массив). Он итерируемый. Метод Array.prototype.entries() возвращает объект типа Array Iterator. Он тоже итерируемый. Метод Array.prototype.values() на данный момент стандартизирован не полностью. Соответственно в большинстве браузеров colors.values() вернёт undefined. Это неитерируемое значение.
1
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 16:13  [ТС]
я понял, но в вашем примере( без явного указания ) в книге написано, что это вызов values(), то есть итератора по умолчанию.
если values() не поддерживается, то как же он работает ( в случае итератора по умолчанию)?
что происходит в момент вызова цикла ( for( let value of colors) )?

JavaScript
1
2
3
4
5
let colors = [ 'red', 'green', 'blue' ];
 
for( let value of colors) {
    console.log( value );
}
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 16:16
При каждой итерации цикла в переменную value записывается текущее значение массива с учётом итерации. Как именно это происходит - знать никому не обязательно. Это нативная конструкция.

Добавлено через 1 минуту
Цитата Сообщение от Leo Khan Посмотреть сообщение
в книге написано, что это вызов values()
Приведите цитату из книги, а также название книги и её автора.
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 16:24  [ТС]
;;;;
Миниатюры
Маленький JS код, а не работает  
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
17.10.2017, 16:31
Странно в книге по JS видеть формулировку "ассоциативный массив". Технически она верна, но общепринято в JS употреблять не "ассоциативный массив", а объект или JS-объект...
Как видите, по всей видимости автор перепутал. Для множеств метод values() действительно стандартизирован и существует. Для объектов и массивов это не так.
0
1 / 1 / 1
Регистрация: 21.09.2015
Сообщений: 98
17.10.2017, 16:38  [ТС]
Может переводчики тогда чего начудили ))

new Map() - ассоциативный массив у него
на самом деле удобно так воспринимать

JavaScript
1
2
3
4
5
6
7
8
9
let map = new Map([
    [ 'name', 'MyName' ],
    [ 'lastname', 'MyLast' ]
]);
 
map.forEach( function( value, key, ownerMap ) {
    console.log( key + ' ' + value );
    console.log( ownerMap === map );
});
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.10.2017, 16:38
Помогаю со студенческими работами здесь

Маленький код
Добрый день всем ! Прошу помощи в написании маленького кода Имеется три столбца А В С в столбце С последовательная нумерация строк от 1...

Переписать маленький код с С++
Здравствуйте! Помогите, пожалуйста, переписать код с С++ на С#. Я только начал изучать С#, поэтому не особо получается. Заранее спасибо! ...

Руссифицируйте маленький код?)
Ребят, руссифицируйте пожалуйста маленький код?) callback : function(days, hours, minutes, seconds){ var message =...

Проверьте маленький код
Хотел создать тему по поводу ошибки, но когда писал то нашел решение) #include <iostream> double cel(double); int main() { ...

Проверьте маленький код JS!
<!DOCTYPE html> <html> <head> <title>Dynamic HTML</title> <script type="text/javascript"...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru