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
(size)New in version EcmaScript6.
Буферный массив - это коллекция 8 битовых блоков в памяти.
Размер определяется при его создании и не может увеличиваться динамический.
Буферные массивы могут хранить только числа.
В момент создания буферного массива все его блоки инициализируются нулями.
Для чтения и записи данных в буфер используют DataView
let buffer = new ArrayBuffer(80);
byteLength
Длина в байтах последовательности
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
(buffer)Note
EcmaScript6
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
Буферный массив для 8/16/32 битных чисел со знаком
Int8Array
(buffer)Note
EcmaScript6
Int16Array
(buffer)Note
EcmaScript6
Int32Array
(buffer)Note
EcmaScript6
Буферный массив для 8/16/32 битных чисел без знака
Uint8Array
(buffer)Note
EcmaScript6
Uint16Array
(buffer)Note
EcmaScript6
Uint32Array
(buffer)Note
EcmaScript6