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

Int8Array(), Int16Array(), Int32Array()

Буферный массив для 8/16/32 битных чисел со знаком

class Int8Array(buffer)

Note

EcmaScript6

class Int16Array(buffer)

Note

EcmaScript6

class Int32Array(buffer)

Note

EcmaScript6

Uint8Array(), Uint16Array(), Uint32Array()

Буферный массив для 8/16/32 битных чисел без знака

class Uint8Array(buffer)

Note

EcmaScript6

class Uint16Array(buffer)

Note

EcmaScript6

class Uint32Array(buffer)

Note

EcmaScript6