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]
См.также
Внешние ссылки