Espruino:Справочник по API/Класс E/mapInPlace(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...»)
 
Нет описания правки
Строка 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-памятью.

См.также

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