Espruino:Справочник по API/Класс E/mapInPlace(): различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Функция E.mapInPlace()<ref>[https://www.espruino.com/Reference#t_l_E_mapInPlace www.espruino.com - E.mapInPlace]</ref>= | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript" enclose="div"> | <syntaxhighlight lang="javascript" enclose="div"> | ||
E.mapInPlace(from, to, map, bits) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Параметры== | ==Параметры== | ||
* '''from''' – объект ArrayBuffer, из которого нужно прочесть элементы | |||
* '''to''' – объект ArrayBuffer, в который надо записать элементы | |||
* '''map''' – массив или '''function(value,index)''', используемая для трансформации массива, или ''undefined'', чтобы не выполнять никакой трансформации | |||
* '''bits''' – будучи заданным, этот аргумент означает количество битов на один элемент (первый – самый старший бит). В противном случае будет использовано соотношение ''1:1''. Если задать здесь отрицательное значение, первым будет самый младший бит | |||
==Возвращаемое значение== | |||
Нет. | |||
== | ==Описание== | ||
Берет каждый элемент из массива ''from'', сверяет его с массивом в ''map'' (или вызывает '''map(value,index)''', если это функция), а затем записывает результат в соответствующий элемент массива ''to''. | |||
Во-первых, функция '''E.mapInPlace()''' может воспользоваться массивом: | |||
== | <syntaxhighlight lang="javascript" enclose="div"> | ||
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] | |||
</syntaxhighlight> | |||
А во-вторых, она может воспользоваться ''undefined'', чтобы выполнить сквозной проход, или функцией, чтобы выполнить обычную трансформацию. | |||
<syntaxhighlight lang="javascript" enclose="div"> | |||
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] | |||
</syntaxhighlight> | |||
'''Примечание:''' Эта функция не доступна на устройствах с маленькой [[flash-память]]ю. | |||
=См.также= | =См.также= |
Версия от 19:07, 6 декабря 2020
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Функция 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-памятью.
См.также
Внешние ссылки