Array¶
Array()¶
- class
Array
()¶ Массив
Наследник
Object()
var arr = new Array(); var arr = new Array('hey', 'you'); var arr = new Array(3); var arr = [];
var array = []; var cities = ['moscow', 'kazan']; cities.length; // 2 cities[0]; // 'moscow' cities[3] = 'abakan'; cities.length; // 4 cities; // ['moscow', 'kazan', '', 'abakan'] cities.length = 2; cities; // ['moscow', 'kazan'] cities['city'] = 45; cities.length; // 2
var a = []; a[5] = 5; for (var x in a){ // выведет только 5 } for (var i=0; i<a.length; i++){ // выведет все 5 элементов }
let [a, b, c] = [1, 2, 3]; let [a, , b] = [1, 2, 3]; console.log(a, b); // 1, 3 let [a, ...b] = [1, 2, 3, 4]; console.log(b); // [2, 3, 4] let [a, , , ...b] = [1, 2, 3, 4, 5, 6]; console.log(b); // [4, 5, 6] let newArray = [...oldArray, newValue]; let uniqFruits = [...new Set(fruitsList)];
// перемешать массив [1, 2, 3, 4, 5, 6, 7, 8, 9].sort(function() { return Math.random() - 0.5; }); // [8, 2, 9, 1, 3, 6, 5 ,7, 2]
-
length
¶ Возвращает число, количество элементов в массиве
['moscow', 'kazan'].length; // 2
-
concat
(item...)¶ Возвращает новый массив, расширенный значениями из аргумента
Ели аргументом является массив, то добавляются только те элменты которых нет в исходном массиве
var a = [1, 2, 3]; a.concat([4, 5], 'end'); // [1, 2, 3, 4, 5, 'end'] a.concat([4, 5]); // [1, 2, 3, 4, 5] a.concat([4, 5], [6, 7]); // [1, 2, 3, 4, 5, 6, 7] [].concat(...[1, [2, 5], [6, 7], 9]) // [1, 2, 5, 6, 7, 9]
-
copyWithin
(targetIndex, startIndex, endIndex)¶ Копирует последовательность значений массива в другое место этого массива
New in version EcmaScript6.
let arr1 = [1, 2, 3, 4, 5]; arr1.copyWithin(1, 2, 4); arr1; // 1, 3, 4, 4, 5 let arr2 = [1, 2, 3, 4, 5]; arr2.copyWithin(0, 1); arr2; // 2, 3, 4, 5, 5 let arr3 = [1, 2, 3, 4, 5]; arr3.copyWithin(1, -2); arr3; // 1, 4, 5, 4, 5 let arr4 = [1, 2, 3, 4, 5]; arr4.copyWithin(1, -2, -1); arr4; // 1, 4, 3, 4, 5
-
entries
()¶ Возвращает итерируемый объект, содержащий массив пары ключ/значение, для каждого индекса массива.
New in version EcmaScript6.
-
every
(callback[, this])¶ Возвращает булево, соответсвие всех элементов массива условию обработчика.
New in version ECMAScript5.
[1, 2, 3].every(function(item, index, array){ return x < 5 }); // true [1, 2, 3].every(function(item, index, array){ return x < 3 }); // false
-
fill
(value, startIndex, endIndex)¶ Заменяет все элементы массива в казанном промежутке указанным значением.
Note
EcmaScript6
[1, 2, 3, 4].fill(5); // [5, 5, 5, 5] [1, 2, 3, 4].fill(5, 1, 2); // [1, 5, 3, 4] [1, 2, 3, 4].fill(5, 1, 3); // [1, 5, 5, 4] [1, 2, 3, 4].fill(5, -3, 2); // [1, 5, 3, 4] [1, 2, 3, 4].fill(5, 0, -2); // [5, 5, 3, 4]
-
filter
(callback[, filter])¶ Возвращает массив элементов, удовлетворяющих требованиям обработчика
New in version ECMAScript5.
[1,2,3].filter(function(item, index, array) { return item > 1; }); // [2, 3]
-
find
(testingFunc, this)¶ Возвращает элемент массива, который удовлетворяет условиям функции проверки
New in version ECMAScript5.
[11, 12, 13].find(function(value, index, array){ if (value == this){ return true; } }, 12); // 12
-
findIndex
(testingFunc, this)¶ Возвращает индекс элемента массива удовлетворяющего условию
New in version EcmaScript6.
[11, 12, 13].find(function(value, index, array){ if (value == this){ return true; } }, 12); // 1
..py:method:: flat(dim)
New in version ES2019.
Преобразует многомерный массив в одномерный на заданную максимальную глубину
[ [1, 2, 3], [4, 5, 6], [7, [8, 9]], ].flat(2) === [1, 2, 3, 4, 5, 6, 7, 8, 9]
..py:method:: flatMap()
New in version ES2019.
const texts = ["Hello,", "today I", "will", "use FlatMap"]; texts.map(text => text.split(' ')) === ['Hello', ['today', 'I'], 'will', ['use', 'FlatMap']]; texts.flatMap(text => text.split(' ')) === ['Hello', 'today', 'I', 'will', 'use', 'FlatMap'];
-
forEach
(callback[, this])¶ Вызывает функцию-обработчик для каждого элемента массива
New in version ECMAScript5.
[1, 2, 3].forEach(function(item, index, array){ ... });
-
from
(iterable, function, this)¶ Позволяет получить массив из какого то объекта, например из живого массива элементов дом дерева.
Note
ECMAScript6
Array.from("1, 2, 3", function(item){ return this.number * item; }, {number: 10}); // [10, 20, 30] const liveArraySections = document.getElementsByTagName('section'); // liveArraySections.forEach не будет работать, т.к. живая коллекция Array.from(liveArraySections).forEach(callback);
-
join
(separator=', ')¶ Возвращает строку, полученную преобразованием всех элементов массива в строки и объединенные через разделитель
New in version ECMAScript5.
[1,2,3].join(''); // '123'
-
includes
(value, fromIndex=0)¶ Возвращает булево, есть ли объект в массиве
[1, 2, 3].includes(2); // true ['cat', 'dog', 'bat'].includes('cat'); // true ['cat', 'dog', 'bat'].includes('at'); // false
-
indexOf
(value, pos=0)¶ Возвращает число, индекс элемента в массиве
New in version ECMAScript5.
['a','b','c'].indexOf('b'); // 1 ['a','b','c'].indexOf('d'); // -1 ['a','b','c'].indexOf('a', 1); // -1
-
keys
()¶ Возвращает итерируемый объект, содержащий ключи для всех идексов массива.
New in version EcmaScript6.
-
lastIndexOf
(значение[, int pos=array.length])¶ Возвращает число, позиция элемента в массиве в обратном порядке
New in version ECMAScript5.
-
map
(callback[, this])¶ Возвращает массив, вычисленный по функции-обработчику
New in version ECMAScript5.
[1, 2, 3].map(function(item, index, array) { return item * item; }); // [1, 4, 9]
-
of
(values...)¶ Создает массив из 1 значения
Note
EcmaScript6
Array(2); // [] Array.of(2); // [2]
-
pop
()¶ Возвращает последний элемент и удаляет его и массива
New in version ECMAScript5.
var c = [1,2,3]; c.pop(); // 3 c; // [1,2]
-
push
(item...)¶ Добавляет объект в конец массива и возвращает количесвто элементов в массиве
var c = [1, 2, 3]; c.push(4); c; // [1, 2, 3, 4] c.push(5, 6, 7); c; // [1, 2, 3, 4, 5, 6, 7]
// копирование значений из одного массива в другой var array1 = [2, 3, 4]; var array2 = [1]; Array.prototype.push.apply(array2, array1); // [1, 2, 3, 4]
Note
EcmaScript6
// копирование значений из одного массива в другой var array1 = [2, 3, 4]; var array2 = [1]; array2.push(...array1) // [1, 2, 3, 4]
-
reduce
(callback[, int start=0])¶ Вычисляет значение на основе элементов данного массива, свертка массива
New in version ECMAScript5.
[1,2,3].reduce(function(a, b){ return a + b; }); // 6
-
reduceRight
(callback[, int start=0])¶ Вычисляет значение на основе элементов данного массива, спарва налево, свертка массива
New in version ECMAScript5.
-
reverse
()¶ Возвращает развернутый в обратныом порядке массив
var a = [1, 2, 3]; a.reverse(); // [3, 2, 1]
-
shift
()¶ Возвращает первый элемент массива, и удалеят его из массива
var a = [1, [2, 3], 4]; var b = a.shift(); // 1 a; // [[2, 3], 4]
-
slice
(start, end)¶ Возвращает фрагмент массива
[1, 2, 3, 4, 5].slice(0, 3); // [1, 2, 3] [1, 2, 3, 4, 5].slice(3); // [4, 5] [1, 2, 3, 4, 5].slice(1, -1); // [2, 3, 4] [1, 2, 3, 4, 5].slice(-3, -2); // [3]
-
some
(callback[, this])¶ Проверяет, возвращает ли предикат значение true хотя бы для одного элемента массива
New in version ECMAScript5.
[1,2,3].some(function(item, index, array) { return x > 5; }) // => false: нет элементов > 5 [1,2,3].some(function(item, index, array) { return x > 2; }) // => true: некоторые > 3 [].some(function(item, index, array) { return true; }); // => false: всегда false для []
-
sort
([comparator])¶ Сортирует массив, принимает функцию сравнения, которая может вернуть -1, 0, 1
var a = [1, 2, 15]; a.sort(); a; // [1, 15, 2] a.sort(func(a, b){});
-
splice
(start, deleteCount, item...)¶ Удаляет указанный срез и возвращает их, вставляя в исходный массив указанные элементы массива
var c = [1, 2, 3, 4, 5]; c.splice(1,2); // [2, 3] c; // [1, 4, 5]; c.splice(1, 2, 33, 44); // [4, 5] c; // [1, 33, 44]
-
unshift
(item...)¶ Добавляет в начало массива элементы и возвращает длину массива
var a = []; a.unshift(1); a; // [1] a.unshift(-1, 0); a; // [-1, 0, 1]
-
values
()¶ Возвращает итерируемый объект, содержащий значения элементов массива.
New in version EcmaScript6.
-
Итератор¶
let mArray = [10, 20, 30];
let mIterator = mArray[Symbol.iterator]();
mIterator.next();
// {value: 10, done: false}
ArrayBuffer()¶
- class
ArrayBuffer
(size)¶ New in version EcmaScript6.
Буферный массив - это коллекция 8 битовых блоков в памяти.
Размер определяется при его создании и не может увеличиваться динамический.
Буферные массивы могут хранить только числа.
В момент создания буферного массива все его блоки инициализируются нулями.
Для чтения и записи данных в буфер используют
DataView
let buffer = new ArrayBuffer(80);
-
byteLength
¶ Длина в байтах последовательности
-
ArrayTyped()¶
- class
ArrayTyped
(size)¶ Note
EcmaScript6
let buffer = new ArrayBuffer(80); let view = new DataView(buffer); view.setInt32(8, 22, false); view.getInt32(8, false); // 22
-
setInt8
(offset, value, be)¶
-
setInt16
(offset, value, be)¶
-
setInt32
(offset, value, be)¶ Использует 8/16/32 бит для хранения числа, принимает целое число со знаком
offset - количесвто байтов, которое следует отступить от начала массива перед чтением/записью числа.
value - записываемое число
be - порядок записи байтов байтов числа, false - старшие байты будут записаны первыми.
-
setUint8
(offset, value, be)¶
-
setUint16
(offset, value, be)¶
-
setUint32
(offset, value, be)¶ Использует 8/16/32 бит для хранения числа, принимает целое число без знака
-
setFloat32
(offset, value, be)¶
-
setFloat64
(offset, value, be)¶ Использует 32/64 бит для хранения числа, принимает вещественное число со знаком
-
getInt8
(offset, be)¶
-
getInt16
(offset, be)¶
-
getInt32
(offset, be)¶ Читает 8/16/32 бит и возвращает целое число со знаком
-
getUint8
(offset, be)¶
-
getUint16
(offset, be)¶
-
getUint32
(offset, be)¶ Читает 8/16/32 бит и возвращает целое число без знака
-
getFloat32
(offset, be)¶
-
getFloat64
(offset, be)¶ Читает 32/64 бит и возвращает вещественное число со знаком
-
Float32Array(), Float64Array()¶
- class
Float32Array
(buffer)¶ Note
EcmaScript6
- class
Float64Array
(buffer)¶ Note
EcmaScript6
Буферный массив 64-битных вещественных чисел
// создаем буферный массив на 640 бит, 80 * 8 let buffer = new ArrayBuffer(80); // создаем типизированный буфер 64 битных чисел // в буфере можно хранить не более 10 числе, 640/64 let typed_array = new Float64Array(buffer); typed_array[4] = 11; typed_array.length; // 10 typed_array[4]; // 11