Espruino:Справочник по API/Класс E/mapInPlace()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция E.mapInPlace()[1]

Синтаксис

E.mapInPlace(from, to, map, bits)

Параметры

  • from – объект ArrayBuffer, из которого нужно прочесть элементы
  • to – объект ArrayBuffer, в который надо записать элементы
  • map – массив или function(value,index), используемая для трансформации массива, или undefined, чтобы не выполнять никакой трансформации
  • bits – будучи заданным, этот аргумент означает количество битов на один элемент (первый – самый старший бит). В противном случае будет использовано соотношение 1:1. Если задать здесь отрицательное значение, первым будет самый младший бит

Возвращаемое значение

Нет.

Описание

Берет каждый элемент из массива from, сверяет его с массивом в map (или вызывает map(value,index), если это функция), а затем записывает результат в соответствующий элемент массива to.

Во-первых, функция E.mapInPlace() может воспользоваться массивом:

var a = new Uint8Array([1,2,3,1,2,3]);
var lut = new Uint8Array([128,129,130,131]);
E.mapInPlace(a, a, lut);
// a = [129, 130, 131, 129, 130, 131]

А во-вторых, она может воспользоваться undefined, чтобы выполнить сквозной проход, или функцией, чтобы выполнить обычную трансформацию.

var a = new Uint8Array([0x12,0x34,0x56,0x78]);
var b = new Uint8Array(8);
E.mapInPlace(a, b, undefined); // сквозной проход
// b = [0x12,0x34,0x56,0x78,0,0,0,0]
E.mapInPlace(a, b, (value,index)=>index); // пишем индекс 
                                          // в первые 4 элемента 
                                          // (потому что a.length==4)
// b = [0,1,2,3,4,0,0,0]
E.mapInPlace(a, b, undefined, 4); // 4 бита на элемент, 
                                  // 8-битные вводные данные ->
                                  // в 2 раза больше данных на выходе
                                  // порядок – от старшего к младшему
// b = [1, 2, 3, 4, 5, 6, 7, 8]
E.mapInPlace(a, b, undefined, -4); // 4 бита на элемент,
                                   // 8-битные вводные данные ->
                                   // в 2 раза больше данных на выходе
                                   // порядок – от младшего к старшему
// b = [2, 1, 4, 3, 6, 5, 8, 7]
E.mapInPlace(a, b, a=>a+2, 4);
// b = [3, 4, 5, 6, 7, 8, 9, 10]
var b = new Uint16Array(4);
E.mapInPlace(a, b, undefined, 12); // 12 битов на элемент,
                                   // 8-битные вводные данные, 
                                   // порядок - от старшего к младшему
// b = [0x123, 0x456, 0x780, 0]
E.mapInPlace(a, b, undefined, -12); // 12 битов на элемент,
                                    // 8-битные вводные данные,
                                    // порядок – от младшего 
                                    // к старшему
// b = [0x412, 0x563, 0x078, 0]
Примечание

Эта функция не доступна на устройствах с маленькой flash-памятью.

См.также

Внешние ссылки