Автор: Дмитрий Павлютин
Переводчик: Front-end Xiaozhi
Источник: dmitripavlutin.com
Чем больше вы знаете, тем больше вы не знаете
Ставьте лайк и смотрите снова, формируйте привычку
эта статьяГитхаб:GitHub.com/QQ449245884…Он был включен в вышеизложенное, и более ранние статьи с высокими похвалами были классифицированы, а также было систематизировано множество моих документов и учебных материалов. Добро пожаловать в Star and Perfect. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Надеюсь, у нас что-то получится вместе.
Массивы — широко используемые структуры данных в JS. Объекты массива предоставляют ряд полезных методов, таких какarray. forEach()
,array.map()
и т. д. для управления массивом.
На практике я часто теряюсь в догадках о возможных операциях с массивами и о том, какой метод лучше использовать, поэтому в этой статье перечислены15
Общий метод данных, давайте повторим и укрепим память.
1. Обход массива
1.1 for..of
цикл
for(const item of items)
Прокрутите элементы массива следующим образомcolors
Список:
const colors = ['blue', 'green', 'white'];
for (const color of colors) {
console.log(color);
}
// 'blue'
// 'green'
// 'white'
намекать:
мы можем использовать его в любое времяbreak
Оператор прекращает обход.
1.2 for
цикл
for(let i; i < array.length; i++)
Цикл перебирает элементы массива, используя увеличивающуюся индексную переменную.
for
Обычно нужно увеличивать каждый циклindex
Переменная
const colors = ['blue', 'green', 'white'];
for (let index = 0; index < colors.length; index++) {
const color = colors[index];
console.log(color);
}
// 'blue'
// 'green'
// 'white'
index
переменная от0
увеличить доcolors.length-1
. Эта переменная используется для доступа к элементам по следующим индексам:colors [index]
.
намекать
мы можем использовать его в любое времяbreak
Оператор прекращает обход.
1.3 array.forEach()
метод
array.forEach(callback)
метод, вызывая каждый элемент массиваcallback
функция для перебора элементов массива.
На каждой итерации вызываются следующие параметрыcallback(item [, index [, array]])
: текущий элемент обхода, текущий индекс обхода и сам массив.
const colors = ['blue', 'green', 'white'];
colors.forEach(function callback(value, index) {
console.log(value, index);
});
// 'blue', 0
// 'green', 1
// 'white', 2
намекать:
мы не можем остановитьсяarray.forEach()
повторять.
2. Отображение массивов
2.1 Array.map()
метод
array.map(callback)
метод, используя для каждого элемента массиваcallback
Вызовите результат, чтобы создать новый массив.
в каждом обходеcallback(item[, index[, array]])
Вызывается с аргументами: текущий элемент, индекс и сам массив, и должен возвращать новый элемент.
Мы увеличиваем каждый элемент массива, как показано ниже.1
:
const numbers = [0, 2, 4];
const newNumbers = numbers.map(function increment(number) {
return number + 1;
});
newNumbers; // => [1, 3, 5]
намекать:
array.map()
Создает новый сопоставленный массив без изменения исходного массива.
2.2 Array.from()
метод
Array.from(arrayLike[, callback])
метод, используя для каждого элемента массиваcallback
Вызовите результат, чтобы создать новый массив.
в каждом обходеcallback(item[, index[, array]])
Вызывается с аргументами: текущий элемент, индекс и сам массив и должен возвращать новый элемент.
Мы увеличиваем каждый элемент массива, как показано ниже.1
:
const numbers = [0, 2, 4];
const newNumbers = Array.from(numbers,
function increment(number) {
return number + 1;
}
);
newNumbers; // => [1, 3, 5]
намекать:
-
Array.from()
Создает новый сопоставленный массив без изменения исходного массива. -
Array.from()
Лучше для отображения из массивоподобных объектов.
3. Упрощение данных
3.1 Array.reduce()
метод
array.reduce(callback[, initialValue])
позвонивcallback
Функция для уменьшения массива до одного значения.
в каждом обходеcallback(accumulator, item[, index[, array]])
Используйте вызов с аргументами: аккумулятор, текущий элемент, индекс и сам массив и должны возвращать аккумулятор.
Классический пример — суммирование массива чисел:
const numbers = [2, 0, 4];
function summarize(accumulator, number) {
return accumulator + number;
}
const sum = numbers.reduce(summarize, 0);
sum; // => 6
Первый шаг, будетaccumulator
инициализирован как0
. Затем для каждого элемента массива, который накапливает сумму чисел, вызовитеsummary
функция.
намекать:
Если initialValue не используется для установки начального значения, по умолчанию в качестве начального значения используется первый элемент массива.
4. Соединение для передачи данных
4.1 array.concat()
метод
array.concat(array1[, array2, ...])
Объедините один или несколько массивов в исходный массив. Объедините два массива следующим образом:
const heroes = ['小智', '前端小智'];
const villains = ['老王', '小三'];
const everyone = heroes.concat(villains);
everyone // ["小智", "前端小智", "老王", "小三"]
намекать:
-
concat()
Создать новый массив без изменения исходного массива -
array.concat(array1 [,array2,...])
Принимает несколько массивов для объединения.
4.2 Развернуть символы операторов
Мы используем оператор распространения с литералами массива для объединения массивов:[...array1, ...array2]
.
const heroes = ['小智', '前端小智'];
const villains = ['老王', '小三'];
const names = [...heroes, ...villains];
names; // ["小智", "前端小智", "老王", "小三"]
намекать:
[...arr1, ...arr2, ...arrN]
: мы можем объединить столько массивов, сколько захотим, используя оператор распространения.
получить фрагмент массива
5.1 array.slice()
метод
array.slice([fromIndex [,toIndex]])
Возвращает фрагмент массива изfromIndex
начать сtoIndex
конец (не считаяtoIndex
сам).fromIndex
Необязательный параметр по умолчанию равен0
,toIndex
Необязательный параметр по умолчанию равенarray.length
.
const names = ["小智", "前端小智", "老王", "小三"]
const heroes = names.slice(0, 2)
const villains = names.splice(2)
heroes // ["小智", "前端小智"]
villains // ["老王", "小三"]
намекать:
array.slice()
Создает новый массив без изменения исходного массива.
6. Копия массива
6.1 Оператор спреда
Простой способ скопировать массив — использовать оператор распространения:const clone = [... array]
, как показано ниже, скопируйтеcolors
множество:
const colors = ['white', 'black', 'gray'];
const clone = [...colors];
clone; // => ['white', 'black', 'gray']
colors === clone; // => false
намекать:
[...array]
Создайте неглубокую копию.
6.2 array.concat()
метод
[].concat(array)
это еще один способ скопировать массив.
const colors = ['white', 'black', 'gray'];
const clone = [].concat(colors);
clone; // => ['white', 'black', 'gray']
colors === clone; // => false
намекать:
[].concat(array)
Создайте неглубокую копию.
6.3 array.slice()
метод
array.slice())
это еще один способ скопировать массив.
const colors = ['white', 'black', 'gray'];
const clone = colors.slice();
clone; // => ['white', 'black', 'gray']
colors === clone; // => false
намекать:
colors.slice()
Создайте неглубокую копию.
7. Найдите массив
7.1 array.includes()
метод
array.includes(itemToSearch [,fromIndex])
возвращает логическое значение,array
Содержит ли онitemToSearch
. необязательный параметрfromIndex
, По умолчанию0
, который представляет индекс, с которого нужно начать поиск. А именно: Суд2
а также99
существует в наборе чисел:
const numbers = [1, 2, 3, 4, 5];
numbers.includes(2); // => true
numbers.includes(99); // => false
7.2 array.find()
метод
array.find(predicate)
Метод возвращает значение первого элемента массива, удовлетворяющего предоставленной тестовой функции. в противном случае вернутьсяundefined
.
Найдите первое четное число в массиве следующим образом:
const numbers = [1, 2, 3, 4, 5];
function isEven(number) {
return number % 2 === 0;
}
const evenNumber = numbers.find(isEven);
evenNumber; // => 2
7.3 array.indexOf()
метод
array.indexOf(itemToSearch[, fromIndex])
вернутьarray
первый появившийся вitemToSearch
индекс чего-либо. По умолчанию0的
необязательный параметрfromIndex
Указывает индекс, с которого следует начать поиск.
Как показано ниже, найдите前端小智
индекс чего-либо:
const names = ["小智", "前端小智", "老王", "小三"]
const index = names.indexOf('前端小智')
index // 1
намекать:
- Если элемент не найден, то
array.indexOf(itemToSearch)
вернуть-1
-
array.findIndex(predicate)
это использоватьpredicate
Альтернатива индексу поиска функции.
8. Запрос массива
8.1 array.every()
метод
если каждый элемент проходитpredicate
проверьте, затемarray.every(predicate)
вернутьtrue
.
при каждом переходеpredicate(item[, index[, array]])
выше вызов с параметрамиpredicate
Функция: в настоящее время перебирает элемент, индекс и сам массив.
Определите, содержит ли массив только четные числа, следующим образом:
const evens = [0, 2, 4, 6];
const numbers = [0, 1, 4, 6];
function isEven(number) {
return number % 2 === 0;
}
evens.every(isEven); // => true
numbers.every(isEven); // => false
8.2 array.some()
метод
Если только один из каждого элемента проходитpredicate
проверьте, затемarray.every(predicate)
вернутьtrue
.
при каждом переходеpredicate(item[, index[, array]])
выше вызов с параметрамиpredicate
Функция: в настоящее время перебирает элемент, индекс и сам массив.
Вот так: Определите, содержит ли массив хотя бы одно четное число:
const numbers = [1, 5, 7, 10];
const odds = [1, 3, 3, 3];
function isEven(number) {
return number % 2 === 0;
}
numbers.some(isEven); // => true
odds.some(isEven); // => false
9. Фильтрация массива
9.1 array.filter()
метод
array.filter(predicate)
метод создает новый массив, содержащий все элементы теста, реализованного предоставленной функцией.
при каждом переходеpredicate(item[, index[, array]])
выше вызов с параметрамиpredicate
Функция: в настоящее время перебирает элемент, индекс и сам массив.
Как это: фильтруйте массив, чтобы содержать только четные номера:
const numbers = [1, 5, 7, 10];
function isEven(number) {
return number % 2 === 0;
}
const evens = numbers.filter(isEven);
evens; // => [10]
намекать:
array.filter()
Создает новый массив без изменения исходного массива.
10. Вставка массива
10.1 array.push()
метод
array.push(item1 [...,itemN])
Метод добавляет один или несколько элементов в конец массива и возвращает новую длину.
как показано ниже, вnames
добавить в конец массива'小智'
const names = ['小智']
names.push('前端小智')
names // ["小智", "前端小智"]
намекать:
-
array.push()
изменит исходный массив -
array.push(item1, item2, ..., itemN)
Можно добавить несколько элементов.
10.2 array.unshift()
метод
array.unshift(item1[..., itemN])
метод добавляет один или несколько элементов в начало массива, возвращая новую длину массива
const names = ['小智']
names.unshift('前端小智')
names // ["前端小智", "小智"]
намекать:
-
array.unshift()
изменит исходный массив -
array.unshift(item1, item2, ..., itemN)
Можно добавить несколько элементов.
10.3 Оператор спреда
Элементы можно вставлять в массив неизменяемым образом, комбинируя оператор расширения и литерал массива.
Добавить элемент в конец массива:
const names = ['小智', '大治']
const names2 = [...names, '王大冶']
names2 // ["小智", "大治", "王大冶"]
Добавить элемент в начало массива:
const names = ['小智', '大治']
const names2 = [
'王大冶',
...names
]
names2 // ["王大冶", "小智", "大治"]
Вставить элемент по любому индексу:
const names = ['小智', '大治']
const indexToInsert = 1
const names2 = [
...names.slice(0, indexToInsert),
'前端小智',
...names.slice(indexToInsert)
]
names2 // ["小智", "前端小智", "大治"]
11. удалить элемент массива
11.1 array.pop()
метод
array.pop()
Метод удаляет последний элемент из массива и возвращает этот элемент. Как показано ниже, удалитеcolors
Последний элемент массива:
const colors = ['blue', 'green', 'black'];
const lastColor = colors.pop();
lastColor; // => 'black'
colors; // => ['blue', 'green']
намекать:
array.pop()
изменит исходный массив.
11.2 array.shift()
метод
array.shift()
Метод удаляет первый элемент из массива и возвращает этот элемент.
const colors = ['blue', 'green', 'black'];
const firstColor = colors.shift();
firstColor; // => 'blue'
colors; // => ['green', 'black']
намекать:
-
array.shift()
изменит исходный массив. -
array.shift()
Инструмент有O(n)
сложность.
11.3 array.splice()
метод
array.splice(fromIndex[, removeCount[, item1[, item2[, ...]]]])
Удалить элементы из массива и вставить новые элементы.
Например, мы начинаем с индекса1
удалять2
элементы:
const names = ['张三', '李四', '王五', '赵六']
names.splice(1, 2)
names // => ["张三", "赵六"]
names.splice(1,2)
удалить элемент'张三'
а также'赵六'
.
names.splice()
Вместо вставки удаленных элементов можно вставлять новые элементы. мы можем заменить индекс1
началось в2
элементы, затем вставьте новый элемент'小智'
:
const names = ['张三', '李四', '王五', '赵六']
names.splice(1, 2, '小智')
names // ["张三", "小智", "赵六"]
намекать:
-
array.splice()
изменит исходный массив.
11.4 Развернуть символы оператора
Элементы могут быть удалены из массива неизменяемым образом путем объединения оператора расширения и литерала данных.
const names = ['张三', '李四', '王五', '赵六']
const fromIndex = 1
const removeCount = 2
const newNames = [
...names.slice(0, fromIndex),
...names.slice(fromIndex + removeCount)
]
newNames // ["张三", "赵六"]
12. Очистить массив
12.1 array.length
Атрибуты
array.length
это свойство, которое содержит длину массива. Помимо,array.length
доступен для записи.
Если мы напишем меньше, чем текущая длинаarray.length = newLength
, лишние элементы удаляются из массива.
следующим образом: использоватьarray.length = 0
Удалить все элементы в массиве:
const colors = ['blue', 'green', 'black'];
colors.length = 0;
colors; // []
12.2 array.splice()
метод
array.splice(fromIndex[, removeCount[, item1[, item2[, ...]]]])
Удалить элементы из массива и вставить новые элементы.
еслиremoveCount
Параметр опущен, тогдаarray.splice()
удалю изfromIndex
Все элементы массива для начала. Мы используем его для удаления всех элементов в массиве:
const colors = ['blue', 'green', 'black'];
colors.splice(0);
colors; // []
13. Заполните массив
13.1 array.fill()
метод
array.fill(value[, fromIndex[, toIndex]])
использовать отfromIndex
прибытьtoIndex
заполнить массив значениями (исключаяtoIndex
сам).fromIndex
Необязательный параметр по умолчанию равен0
,toIndex
Необязательный параметр по умолчанию равенarray.length
.
Например, используя заполнение массива нулевыми значениями:
const numbers = [1, 2, 3, 4];
numbers.fill(0);
numbers; // => [0, 0, 0, 0]
Мало того, вы также можете использоватьArray(length).fill(initial)
для инициализации массива определенной длины и начального значения.
const length = 3;
const zeros = Array(length).fill(0);
zeros; // [0, 0, 0]
намекать:
-
array.fill()
изменит исходный массив.
13.2 Array.from()
функция
Array.from()
Полезно для инициализации массива определенной длины с объектами:
const length = 4;
const emptyObjects = Array.from(Array(length), function() {
return {};
});
emptyObjects; // [{}, {}, {}, {}]
14. Сведение массивов
14.1 array.flat()
метод
array.flat([depth])
Метод создает новый массив путем рекурсивного выравнивания элементов, принадлежащих массиву, до определенной глубины.depth
Необязательный параметр по умолчанию равен1
:
const arrays = [0, [1, 3, 5], [2, 4, 6]];
const flatArray = arrays.flat();
flatArray; // [0, 1, 3, 5, 2, 4, 6]
arrays
Содержит смесь чисел и массивов чисел.arrays.flat()
Сгладьте массив, чтобы он содержал только числа.
намекать:
array.flat()
Создайте новый массив, не изменяя исходный массив.
15. Сортировка массива
15.1 array.sort()
метод
array.sort([compare])
метод сортировки элементов массива.
необязательный параметрcompare(a, b)
Функция обратного вызова для пользовательского порядка сортировки. Если вы сравнитеcompare(a, b)
Возвращаемый результат:
- если
a
меньше, чемb
, в отсортированном массивеa
должно появиться вb
раньше он возвращает меньше, чем0
ценность . - если
a
равныйb
, просто вернись0
. - если
a
больше, чемb
, он возвращает значение больше, чем0
ценность .
Как показано ниже, для массиваnumbers
хронологический порядок
const numbers = [4, 3, 1, 2];
numbers.sort();
numbers; // => [1, 2, 3, 4]
numbers.sort()
Упорядочить числа в порядке возрастания.
Используйте функцию сравнения для сортировки четных чисел перед нечетными:
const numbers = [4, 3, 1, 2];
function compare(n1, n2) {
if (n1 % 2 === 0 && n2 % 2 !== 0) {
return -1;
}
if (n1 % 2 !== 0 && n2 % 2 === 0) {
return 1;
}
return 0;
}
numbers.sort(compare);
numbers; // => [4, 2, 3, 1]
намекать:
-
array.sort()
изменит исходный массив.
оригинал:Рисовая поездка avlutin.com/operations-…
Ошибки, которые могут существовать после развертывания кода, нельзя узнать в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку логов.Кстати, всем рекомендую полезный инструмент мониторинга ошибок.Fundebug.
общаться с
Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете. ard.png](Боюсь 1-solve.byte IMG.com/to S-talent-i-he 2…)