Сообщение:
Метод массива JS очень богат и тривиален, в процессе изучения и использования всегда необходимо многократно запоминать и просматривать документы, но как основа JS, так быть не должно, мы должны помнить это досконально и понимать это тщательно.
Но как это сделать? Именно в этом и состоит изначальная цель этой статьи, основанная на моем личном опыте, я надеюсь помочь людям, которые так же запутались, как и я, решить эту головную боль.
создание массива
Существует три способа создания массива: конструктор, литерал и новый метод ES6 Array.of().
-
Способ конструктора:
let arr = new Array(); // 创建一个空数组 let arr = new Array(10); // 创建长度为10的数组 let arr = new Array('a'); // 创建包含一个字符串元素a的数组 let arr = new Array(10, 'a'); // 创建包含10和字符串a两个元素的数组
резюме:
1. Новое ключевое слово можно опустить
2. Когда передается только один параметр числового типа, создается массив длины, указанной параметром.То есть массив создается в виде конструктора, и нельзя создать массив, содержащий только один элемент типа number -
Буквальный способ:
let arr = [10, 'a']; // 字面量方式,即直接给数组赋值
-
Метод Array.of() (новый в ES6):
Функция метода заключается в преобразовании набора значений (то есть переданных параметров) в массив.
Этот метод восполняет недостатки конструктора для создания массива.Можно создать массив только с одним элементом типа number.let arr = Array.of(3); console.log(arr); // [3] // 参数可以是各种类型 let arr1 = Array.of(1, 'a', true, null, undefined, {name: "zhangsan"}, [45]); console.log(arr1); // [ 1, 'a', true, null, undefined, { name: 'zhangsan' }, [ 45 ] ]
Обнаружение массива
Есть два более точных метода обнаружения:
- Используйте метод toString объекта:
Object.prototype.toString.call([]) === "[object Array]"; // true - Array.isArray():
Array.isArray([1, 2, 3]); // true
свойства массива
- свойство длины:
эффект:- Установить или вернуть длину массива
- Может использоваться для добавления и удаления элементов массива.
let arr = [1, 2]; arr.length = 1; console.log(arr); // [1] arr.length = 3; console.log(arr); // [1, , ]
метод массива
Методы массива в JavaScript включают в себя методы прототипов массивов и методы конструкторов (новое в ES6).
Для каждого метода мы в основном понимаем четыре аспекта:Функция, параметры, возвращаемое значение, изменился ли исходный массив
(1) Способ по прототипу
-
толкать():
Роль: добавить один или несколько элементов в конец массива
Параметры: ele1[ ele2[ ...[ elen]]]
Возвращаемое значение: длина массива после добавления элементов.
Исходный массив изменен: даlet arr = [1, 2, 3]; let temp = arr.push('a', 'b'); console.log(arr, temp); // [1, 2, 3, 'a', 'b'] 5
-
pop():
Функция: удалить последний элемент массива
Параметры: нет
Возвращаемое значение: удаленный элемент
Исходный массив изменен: даlet arr = [1, 2, 3]; let temp = arr.pop(); console.log(arr, temp); // [1, 2] 3
-
unshift():
Роль: добавить один или несколько элементов в начало массива
Параметры: ele1[ ele2[ ...[ elen]]]
Возвращаемое значение: длина массива после добавления элементов.
Исходный массив изменен: даlet arr = [1, 2, 3]; let temp = arr.unshift('a', 'b'); console.log(arr, temp); // ['a', 'b', 1, 2, 3] 5
-
shift():
Функция: удалить первый элемент массива
Параметры: нет
Возвращаемое значение: удаленный элемент
Исходный массив изменен: даlet arr = [1, 2, 3]; let temp = arr.shift(); console.log(arr, temp); // [2, 3] 1
-
splice():
Функция: удаление, вставка, замена элементов массива
Параметры: startIndex[ deleteCount[ item1[ ...[ itemN]]]]
Возвращаемое значение: массив удаленных элементов
Исходный массив изменен: даlet arr = [1, 2, 3]; // 插入元素 let temp = arr.splice(1, 0, 'a', 'b'); // 在索引1的位置插入元素'a'和'b' console.log(arr, temp); // [1, 'a', 'b', 2, 3] [] // 删除元素 let temp1 = arr.splice(1, 2); // 删除从索引1的位置开始的2项 console.log(arr, temp1); // [1, 2, 3] ['a', 'b'] // 替换一个元素 let temp2 = arr.splice(1, 1, 'a'); // 将索引1的位置的元素替换为'a' console.log(arr, temp2); // [1, 'a', 3 ] [2] // 替换多个元素 let temp3 = arr.splice(0, 2, 'b', 'c'); // 将索引0的位置开始的两项,替换成’b‘和’c‘ console.log(arr, temp3); // [’b‘, 'c', 3] [1, 'a'] // 只传第一个参数,则删除从第一个参数指定的位置到数组结尾的所有项 let temp4 = arr.splice(0); //从索引0的位置开始,删除后面的所有项 console.log(arr, temp4); // [] [’b‘, 'c', 3]
-
copyWithin()
Функция: скопировать элементы указанной позиции массива (от начала до конца) в другие позиции текущего массива (от начала цели), эта копия заменит элементы в исходной позиции (новое в ES6).
Описание параметра: цель[начало[конец]]
Описание параметра:- target: целевая позиция копии (включительно), т. е. позиция, с которой начинается заменяемый элемент
- start: начальная позиция копируемого элемента, по умолчанию 0
- end: конечная позиция копируемого элемента, по умолчанию это последний элемент массива
Возвращаемое значение: Массив после копирования и замены
Исходный массив изменен: даlet arr = [1, 2, 3, 4, 5]; // 用索引0~4范围内的元素,替换索引3~4范围内的元素,因为要替换的位置只有两个,所以只将4,5替换为了1,2 let temp = arr.copyWithin(3); console.log(arr, temp); // [1, 2, 3, 1, 2] [1, 2, 3, 1, 2] let arr1 = [1, 2, 3, 4, 5]; // 用索引2~4范围内的元素,替换索引3~4范围内的元素,因为要替换的位置只有两个,所以只将4,5替换为了3,4 let temp1 = arr1.copyWithin(3, 2); console.log(arr1, temp1); // [1, 2, 3, 3, 4] [1, 2, 3, 3, 4]
резюме:
Суммируя приведенное выше описание, роль copyWithin заключается в том, чтобыв диапазоне длины массива, скопируйте элементы в диапазоне от начала (включено) до конца (исключено), а затем замените элементы от цели (включено) до конца массива указанными выше элементами и замените столько, сколько сможете. -
reverse():
Функция: перевернуть исходный массив
Параметры: нет
Возвращаемое значение: перевернутый массив
Исходный массив изменен: даlet arr = [1, 2, 3]; let temp = arr.reverse(); console.log(arr, temp); // [ 3, 2, 1 ] [ 3, 2, 1 ]
-
sort():
Роль: сортировка массива
Параметры: функция сравнения
Описание параметра:- Когда возвращаемое значение compareFunction больше 0, порядок текущих элементов сравнения меняется на противоположный, в противном случае порядок остается неизменным;
- Параметры можно не указывать, а если они не переданы, то по умолчанию они располагаются в порядке кодировки Unicode.
Возвращаемое значение: отсортированный массив
Исходный массив изменен: да// 数组从小到大排序 let arr = [1, 4, 6, 7, 8, 3, 2]; let temp = arr.sort((a, b) => { return a - b; }) console.log(arr, temp); // [ 1, 2, 3, 4, 6, 7, 8 ] [ 1, 2, 3, 4, 6, 7, 8 ] // 一个实用的数组排序的例子,根据对象元素的排序,排序对象在数组中的位置 let objArr = [{id: 3, name: "lilei"},{id: 1, name: "hanmeimei"},{id: 2, name: "yimi"}]; let tempArr = objArr.sort((a, b) => { // 按照id从小到大的顺序,对数组中的对象进行排序 // 这个示例说明回调函数的形参a,b实际就是数组中当前进行比对的两个元素 return a.id - b.id; }); console.log(objArr); // [{id: 1, name: 'hanmeimei'}, {id: 2, name: 'yimi'}, { id: 3, name: 'lilei' }] console.log(tempArr); // [{id: 1, name: 'hanmeimei'}, {id: 2, name: 'yimi'}, { id: 3, name: 'lilei'}]
-
concat():
Роль: объединение массивов на основе текущего массива
Параметры: значение1[ значение2[ ...[ значениеN]]
Описание параметра:- Тип параметра может быть любым.
- Если это не тип массива, то он стыкуется непосредственно в конец массива по порядку.Если это тип массива, элементы массива вынимаются один за другим и стыкуются в конец массива множество.
- Не передать его эквивалентно копированию массива
Возвращаемое значение: конкатенированный массив
Исходный массив изменен: нетlet arr = [1,2]; let temp = arr.concat('a', {id:1}, ['lilei', 'hanmeimei']); console.log(arr, temp); // [ 1, 2 ] [ 1, 2, 'a', { id: 1 }, 'lilei', 'hanmeimei'] // 用于复制数组 let arr = [1, 2]; let temp = arr.concat(); console.log(arr, temp); // [ 1, 2 ] [ 1, 2 ]
-
slice():
Роль: создать новый массив на основе одного или нескольких элементов текущего массива.
Параметры: startIndex[endIndex]
Описание параметра: возвращаемый элемент содержит элемент в позиции startIndex, но не включает элемент в позиции endIndex.
Возвращаемое значение: возвращает массив перехваченных элементов.
Исходный массив изменен: нетlet arr = [0, 1, 2, 3, 4]; let temp = arr.slice(1,3); // 返回从索引1(包括)位置到索引3(不包括)位置之前的元素 console.log(arr, temp); // [0, 1, 2, 3, 4] [1, 2] // 用于复制数组 let arr = [0, 1, 2, 3, 4]; let temp = arr.slice(0); // 返回从索引0(包括)位置到数组结尾的所有元素 console.log(arr, temp); // [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]
-
indexOf():
Функция: найти позицию индекса элемента в массиве с начала массива (метод ES5).
Параметры: searchElement[ fromIndex]
Возвращаемое значение: индекс searchElement в массиве, если searchElement не найден, вернуть -1
Исходный массив изменен: нетlet arr = [1, 2, 3, 4, 5, 6, 2]; // 从数组开头开始查找 let temp = arr.indexOf(2); console.log(arr, temp); // [ 1, 2, 3, 4, 5, 6, 2 ] 1 // 从指定的位置开始查找 let temp1 = arr.indexOf(2,3); // 从索引3(包括)的位置向后查找元素2 console.log(arr, temp1); // [ 1, 2, 3, 4, 5, 6, 2 ] 6
-
lastIndexOf():
Функция: найти позицию индекса элемента в массиве с конца массива (метод ES5).
Параметры: searchElement[ fromIndex]
Возвращаемое значение: индекс searchElement в массиве, если searchElement не найден, вернуть -1 Исходный массив изменен: нетlet arr = [1, 2, 3, 4, 5, 6, 2]; // 从数组末尾开始查找 let temp = arr.lastIndexOf(2); console.log(arr, temp); // [ 1, 2, 3, 4, 5, 6, 2 ] 6 // 从指定的位置开始查找 let temp1 = arr.lastIndexOf(2,3); // 从索引3(包括)的位置向前查找元素2 console.log(arr, temp1); // [ 1, 2, 3, 4, 5, 6, 2 ] 1
-
every():
Функция: запускать данную функцию для каждого элемента в массиве и возвращать значение true, если функция возвращает значение true для каждого элемента (метод ES5).
Параметры: callback[ thisArg]
Описание параметра: обратный вызов имеет три параметра: item (текущий элемент), index (текущий индекс элемента), array (сам объект массива).
Возвращаемое значение: правда или ложь
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4]; let temp = arr.every((item, index, array) => { return item > 2; }); console.log(arr, temp); // [ 1, 2, 3, 4 ] false // 方法的第二个参数可选,作用是设定第一个参数中的this指向,如果使用第二个参数,注意callback不能是箭头函数 // 后面的迭代方法涉及此参数的,用法相同,不在赘述 let arr = [1, 2, 3, 4]; let temp = arr.every(function(item, index, array) { return item > this.id; }, {id: 2}); console.log(arr, temp); // [ 1, 2, 3, 4 ] false
-
some():
Функция: запускать данную функцию для каждого элемента в массиве и возвращать значение true, если функция возвращает значение true для любого элемента (метод ES5).
Параметры: callback[ thisArg]
Описание параметра: обратный вызов имеет три параметра: item (текущий элемент), index (текущий индекс элемента), array (сам объект массива).
Возвращаемое значение: правда или ложь
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4]; let temp = arr.some((item, index, array) => { return item > 2; }); console.log(arr, temp); // [ 1, 2, 3, 4 ] true
-
filter():
Функция: запустить данную функцию для каждого элемента в массиве и вернуть массив элементов, для которых функция возвращает значение true (метод ES5).
Параметры: callback[ thisArg]
Описание параметра: обратный вызов имеет три параметра: item (текущий элемент), index (текущий индекс элемента), array (сам объект массива).
Возвращаемое значение: массив элементов, для которых функция возвращает значение true.
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4]; let temp = arr.filter((item, index, array) => { return item > 2; }); console.log(arr, temp); // [ 1, 2, 3, 4 ] [3, 4]
-
map():
Функция: запускать данную функцию для каждого элемента в массиве и возвращать массив результатов каждого вызова функции (метод ES5).
Параметры: callback[ thisArg]
Описание параметра: обратный вызов имеет три параметра: item (текущий элемент), index (текущий индекс элемента), array (сам объект массива).
Возвращаемое значение: массив результатов каждого вызова функции
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4]; let temp = arr.map((item, index, array) => { return item * item; }); console.log(arr, temp); // [ 1, 2, 3, 4 ] [ 1, 4, 9, 16]
-
forEach():
Что он делает: запускает данную функцию для каждого элемента в массиве. Нет возвращаемого значения (метод ES5)
Параметры: callback[ thisArg]
Описание параметра: обратный вызов имеет три параметра: item (текущий элемент), index (текущий индекс элемента), array (сам объект массива).
Возвращаемое значение: нет
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4]; let temp = arr.forEach((item, index, array) => { // 不会有返回值,但可在这里执行某些操作 return item * item; }); console.log(arr, temp); // [ 1, 2, 3, 4 ] undefined
Уведомление:
forEach не может завершить цикл раньше, чем цикл for, пока не будут пройдены все элементы. -
reduce():
Роль: начать с первого элемента массива, шаг за шагом до конца, перебрать все элементы массива (метод ES5)
Параметры: callback[ initialValue]
Описание параметра:- Функция итерации обратного вызова имеет четыре параметра (prev, cur, index, array).
- предыдущее значение, (initialValue || первый элемент массива || результат предыдущей итерации)
- текущий элемент итерации
- index индекс элемента текущей итерации
- массив исходный массив для повторения
- initialValue Базовое значение итерации, если базовое значение не передано, это первый элемент массива
Возвращаемое значение: после повторения массива общий результат итерации
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.// 数组求和 let arr = [1, 2, 3]; let sum = arr.reduce((prev, cur, index, array) => { return prev + cur; }); console.log(arr, sum); // [ 1, 2, 3 ] 6 // 传initialValue 基础值的示例 let sum1 = arr.reduce((prev, cur, index, array) => { return prev + cur; }, 10); // 返回的值是:10+1+2+3 console.log(arr, sum1); // [ 1, 2, 3 ] 16
Реализация сокращения исходного кода:
Array.prototype.myReduce = function(callback, initialVal){ let prev = initialVal || this[0]; for(var i = pre ? 0 : 1; i < this.length; i++){ prev = callback(prev, this[i], i, this); } return prev }
- Функция итерации обратного вызова имеет четыре параметра (prev, cur, index, array).
-
reduceRight():
Функция: Начать с последнего элемента массива, шаг за шагом к первому элементу, перебрать все элементы массива (метод ES5)
Параметры: callback[ initialValue]
Описание параметра:- Функция итерации обратного вызова имеет четыре параметра (prev, cur, index, array).
- предыдущее значение, (initialValue || первый элемент массива || результат предыдущей итерации)
- текущий элемент итерации
- index индекс элемента текущей итерации
- массив исходный массив для повторения
- initialValue Базовое значение итерации, если базовое значение не передано, это первый элемент массива
Возвращаемое значение: после повторения массива общий результат итерации
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.// 拼接字符串,从后向前迭代数组进行拼接 let arr = ['h', 'e', 'l', 'l', 'o']; let str = arr.reduceRight((prev, cur, index, array) => { return prev + cur; }); console.log(arr, str); // [ 'h', 'e', 'l', 'l', 'o' ] 'olleh'
- Функция итерации обратного вызова имеет четыре параметра (prev, cur, index, array).
-
find():
Функция: поиск первого подходящего элемента в массиве и возврат элемента (новое в ES6).
Параметры: callback[ thisArg]
Описание параметра: использование параметров соответствует приведенным выше методам forEach, every, map, some, filter.
Возвращаемое значение: вернуть элемент, если он найден, вернуть undefined, если он не найден
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4, 5]; let temp = arr.find((item, index, array) => { return item > 2; }) console.log(arr, temp); // [1, 2, 3, 4, 5] 3
-
findIndex():
Функция: найти индекс позиции первого подходящего элемента в массиве и вернуть значение индекса.
Параметры: callback[ thisArg]
Описание параметра: использование параметров соответствует приведенным выше методам forEach, every, map, some, filter.
Возвращаемое значение: если найдено, вернуть значение индекса, если не найдено, вернуть -1
Изменился ли исходный массив: он включает обратный вызов, поэтому неизвестно.Подробности см. в сводке метода-прототипа ниже.let arr = [1, 2, 3, 4, 5]; let temp = arr.findIndex((item, index, array) => { return item > 2; }) console.log(arr, temp); // [1, 2, 3, 4, 5] 2
-
fill():
Функция: заполнить элементы от начала (включено) до конца (исключено) массива указанными элементами.Если в интервале уже есть элементы, заменить их напрямую (новое в ES6)
Параметры: значение[ начало[ конец]]
Возвращаемое значение: заполненный массив
Исходный массив изменен: даlet arr = [1, 2, 3, 4, 5]; let temp = arr.fill('a', 2, 4); console.log(arr, temp); // [1, 2, 'a', 'a', 5] [1, 2, 'a', 'a', 5]
-
includes():
Функция: определить, содержит ли массив указанный элемент (новинка в ES7).
Параметры: searchElement[ fromIndex]
Возвращаемое значение: правда или ложь
Исходный массив изменен: нетlet arr = [1, 2, 3, 4, 5]; let temp = arr.includes(5); console.log(arr, temp); // [1, 2, 3, 4, 5] true // 这个方法弥补了indexOf查看元素时的一个不足,即查找NaN的误差 let arr1 = [NaN, 'a']; let temp1 = arr1.includes(NaN); let temp2 = arr1.indexOf(NaN); console.log(temp1, temp2); // true -1
-
toString(), toLocalString():
Функция: вызвать метод toString() для каждого элемента массива и вернуть строку, разделенную запятыми.
Параметры: нет
Возвращаемое значение: преобразованная строка
Изменился ли исходный массив слов: нетlet arr = [1, [1, 2, [4]], {name: "zhangsan"}, 3]; let temp = arr.toString(); console.log(arr); [ 1, [ 1, 2, [ 4 ] ], { name: 'zhangsan' }, 3 ] console.log(temp); // '1,1,2,4,[object Object],3'
-
join():
Функция: преобразовать элементы массива в строки (вызвать метод toString каждого элемента) и использовать указанный разделитель (по умолчанию запятая) для конкатенации и вернуть объединенную строку.
Параметры: разделитель, по умолчанию запятая (,)
Возвращаемое значение: объединенная строка
Исходный массив изменен: нетlet arr = [1, [1, 2, [4]], {name: "zhangsan"}, 3]; let temp = arr.join(); console.log(arr); [ 1, [ 1, 2, [ 4 ] ], { name: 'zhangsan' }, 3 ] console.log(temp); // '1,1,2,4,[object Object],3' // 数组求和 let arr1 = [1, 2, 3]; console.log(eval(arr1.join('+'))); // 6
Резюме прототипа подхода:
1. Метод массива — это не что иное, как добавление, удаление, изменение, проверка, преобразование и повторение массива. Добавление, удаление и изменение изменяют исходный массив. Методы поиска и преобразования не задействуют параметр обратного вызова. Исходный массив не изменяется. Что задействовано, зависит от ситуации. Метод итерации не уверен, потому что обратный вызов параметр участвует. .
Так почему же неясно, когда дело доходит до обратных вызовов? ? ?
Прежде всего, если вы оперируете исходным массивом непосредственно в обратном вызове, исходный массив обязательно изменится. Например:let arr = [1,2,3,4]; let temp = arr.forEach((item,index,array) => { // 直接通过索引操作原数组 array[index] *= item; }); console.log(arr,temp); // [1, 4, 9, 16] undefined
Если с исходным массивом напрямую не манипулируют, но манипулируют параметром элемента обратного вызова, если элемент является базовым типом данных, соответствующий элемент в исходном массиве не будет изменен, а если это ссылочный тип (массив, объекта, функции и т. д.), оно будет изменено. , потому что манипулирование значением ссылочного типа по сути является манипулированием содержимым адреса хранилища, где находится значение, а элемент в исходном массиве, соответствующий элементу и элементу, тот же адрес ссылки, поэтому соответствующий элемент в исходном массиве будет изменен. (Если вы до сих пор этого не понимаете, то можете посмотреть на реализацию полифилла метода массива, который здесь повторяться не будет)
2. Для всех методов, включающих индексацию, начальная позиция входит в область действия, а конечная позиция не входит в область действия.
(2) Метод конструктора
-
Array.from():
Функция: преобразовать массив классов в массив.
Параметры: arrayLike[ mapFn[ thisArg]]
Описание параметра:- arrayLike: массивоподобный объект, который может быть нашим общим списком узлов, аргументами, строками, итерируемыми объектами и т. д.
- mapFn: функция обратного вызова, которая работает с преобразованным массивом.
- thisArg: указывает это в mapFun
Возвращаемое значение: преобразованный массив, если есть mapFn, возвращаемый результат — это массив, обработанный mapFn
Изменяется ли оригинальный массив класса: если MAPFN не используется, массив класса не будет изменен. Использование MAPFN приводит к тому же результату, что и используя обратный вызов в итеративном методе выше.let str = 'hello'; let temp = Array.from(str); console.log(str, temp); // hello [ 'h', 'e', 'l', 'l', 'o' ] let temp1 = Array.from(str, (item, index) => { return item.toUpperCase(); }); console.log(str, temp1); // hello [ 'H', 'E', 'L', 'L', 'O' ]
резюме:
Array.from() эквивалентен Array.prototype.slice.call(arguments,0)
Оператор расширения массива (новое в ES6)
Оператор расширения для массивов преобразует массив в последовательность аргументов, разделенных запятыми.
Несколько простых сценариев применения:
- Преобразуйте массив в последовательность параметров с помощью оператора распространения и передайте параметры напрямую, нет необходимости использовать преобразование.
let arr = [1, 2, 3]; // apply写法 Math.min.apply(null, arr) // 扩展运算符写法 Math.min(...arr)
- Может использоваться для копирования и объединения массивов.
let arr1 = [2, 3, 4]; let arr2 = ['a', 'b', 'c']; // 拼接数组arr1和arr2 console.log([...arr1, ...arr2]); // [2, 3, 4, 'a', 'b', 'c']
- может использоваться для разложения строк в реальные массивы,
[…'hello'] // [ 'h', 'e', 'l', 'l', 'o' ]
напиши в конце
Я так долго говорил, чтобы не повторять книжку или официальную инструкцию. Вместо этого я поделюсь некоторыми обучающими идеями, чтобы новички могли быстрее и точнее освоить массивы JavaScript, а студенты, оставшиеся на уровне знаний, узнали об этом больше.
Я надеюсь, что приведенные выше описания методов помогут вам понять массивы JavaScript с первого взгляда и облегчат их запоминание при сравнении нескольких аспектов, объясняемых каждым методом.