Предварительный доступ к Uint8ClampedArray

#javascript #arrays

#javascript #массивы

Вопрос:

Функция getImageData возвращает специальный объект array с именем Uint8ClampedArray , который наследует многие из знакомых методов array. ForEach указывает на универсальный метод.

Давайте попробуем один:

 var g = new Uint8ClampedArray([1,2,3,4,5]);
undefined

g
[1, 2, 3, 4, 5]

g.forEach(function(x){ return x   1; } )
undefined

g
[1, 2, 3, 4, 5]
  

Ничего не произошло. Ответ должен быть [2,3,4,5,6] что здесь не так?


Это было сделано в терминале JavaScript Chrome — в инструментах разработчика.

Также я нашел это полезным:

Uint8ClampedArray Типизированный массив представляет собой массив 8-разрядных целых чисел без знака, сжатых до 0-255; если вы указали значение, выходящее за пределы диапазона [0,255], вместо него будет установлено 0 или 255. Содержимое инициализируется значением 0. После установки вы можете ссылаться на элементы в массиве, используя методы объекта или используя стандартный синтаксис индекса массива (то есть, используя обозначение в скобках).

Комментарии:

1. forEach ничего не возвращает. Я думаю, вы ищете map , хотите ли вы выполнить какое-то преобразование 1-1. В документах, на которые вы ссылались, вы можете видеть, что он возвращает undefined для forEach .

2. forEach использует вызов по значению, а не вызов по ссылке, поэтому начальное значение x внутри массива не может быть изменено с помощью forEach. Вы можете просто использовать цикл for.

Ответ №1:

forEach не возвращает никакого значения, это в основном просто цикл for над содержимым. Если вы хотите выполнить преобразование 1-1 и вернуть новый массив, тогда используйте map метод.