Массивы — это тип данных, который мы используем очень часто, и то, сможем ли мы освоить расширенные методы работы с массивами, напрямую повлияет на эффективность нашей работы. Перед началом этой статьи друзья могут прочитать предыдущую статью об обходе массива, которая не будет повторяться в этой статье:
1. Фильтр метода фильтрации
**filter()**метод создает новый массив, содержащий все элементы теста, реализованного предоставленной функцией. ,
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
1.1 параметр
-
callbackФункция для проверки каждого элемента массива. вернуть
trueУказывает, что элемент проходит проверку, сохранить элемент,falseне сохраняется. Он принимает следующие три параметра:elementЭлемент, который в данный момент обрабатывается в массиве.indexнеобязательный Индекс в массиве обрабатываемого элемента.arrayнеобязательный вызовfilterсам массив. -
thisArgнеобязательныйвоплощать в жизнь
callbackкогда, дляthisценность .
1.2 возвращаемое значение
Новый массив элементов, прошедших тест, или пустой массив, если ни один из элементов массива не прошел тест.
-
filterОн не изменяет исходный массив, он возвращает новый отфильтрованный массив.
1.3 описывать
filterВызывается один раз для каждого элемента массиваcallbackфункции и использует всеcallbackвозвращает истину илизначение эквивалентно истинномусоздает новый массив элементов.callbackОн будет вызываться только для индексов, которые были назначены, и не будет вызываться для индексов, которые были удалены или никогда не назначались. те, кто не прошелcallbackПроверяемые элементы пропускаются и не включаются в новый массив.
callbackВызывается с тремя параметрами:
- значение элемента
- индекс элемента
- сам пройденный массив
еслиfilterобеспечитьthisArgпараметр, он будет использоваться какcallbackкогда звонятthisстоимость. иначе,callbackизthisЗначением будет глобальный объект в нестрогом режиме и в строгом режиме.undefined.callbackФункция, наконец, наблюдаетthisстоимость основана наПравила для "этого" с точки зрения обычных функцийопределенный.
1.4 Пример: люди, чей массив больше 5
// filter案例:选出数组中大于五的数
let arr = [5, 6, 8, 10, 24];
let bigThanEightArr = arr.filter((item, index, arr) => {
// console.log(item, index, arr);
return item > 6
}, this);
console.log(bigThanEightArr); //[8,10,24]
Приведенный выше код показывает, как используется метод фильтра, фильтр принимает два параметра и, наконец, возвращает новый массив. Два параметра фильтра:
Первая — это функция обратного вызова. Функция обратного вызова имеет три параметра соответственнотекущий элемент, индекс текущего элемента, исходный массив, вы можете выполнить некоторые операции в функции обратного вызова, чтобы определить, сохранять ли этот элемент, если вы хотите сохранить, функция обратного вызова должна возвращать true , в противном случае возвращать false
В приведенном выше коде, пока текущий элемент больше 5, item > 5 будет возвращать true , таким образом сохраняя значение, поэтому новый массив после фильтрации исходного массива будет [6, 8, 9]
Второй параметр используется для указания указателя на this при выполнении функции обратного вызова. Этот параметр не установлен в приведенном выше коде, поэтому, когда он печатается в обратном вызове, он указывает на объект окна.
2. Карта методов обработки
**map()**Метод создает новый массив, результатом которого является то, что каждый элемент в массиве является возвращаемым значением одного вызова предоставленной функции.
var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg])
2.1 Параметры
- callback Функция, которая генерирует новые элементы массива с тремя аргументами:
-
currentValue: Текущий элемент обрабатываемого массива обратного вызова. -
indexНеобязательный:callbackИндекс текущего элемента в обрабатываемом массиве. -
arrayНеобязательный:mapМассив вызовов методов. -
thisArgНеобязательно: выполнитьcallbackзначение времени функции используется какthis.
2.2 Возвращаемое значение
Новый массив результатов, состоящий из функции обратного вызова, выполняется каждым элементом исходной группы номеров.
2.3 Случай:Map case: умножьте каждый элемент исходного массива на 2
// map案例:将原数组每个元素都乘以2
let doubleArr = arr.map((item, index, arr) => item * 2);
console.log(doubleArr); //[10, 12, 16, 20, 48]
2.4 Следующий код использует массив объектов для воссоздания форматированного массива.
var kvArray = [{key: 1, value: 10},
{key: 2, value: 20},
{key: 3, value: 30}];
var reformattedArray = kvArray.map(function(obj) {
var rObj = {};
rObj[obj.key] = obj.value;
return rObj;
});
// reformattedArray 数组为: [{1: 10}, {2: 20}, {3: 30}],
// kvArray 数组未被修改:
// [{key: 1, value: 10},
// {key: 2, value: 20},
// {key: 3, value: 30}]
3. уменьшить
3.1 Параметры
callback
выполняет каждое значение в массиве (если не указаноinitialValue则第一个值除外) функция с четырьмя параметрами:
accumulator
-
currentValueЭлемент массива, который обрабатывается.
-
indexнеобязательныйИндекс текущего элемента в обрабатываемом массиве. если предусмотрено
initialValue, то начальный номер индекса равен 0, иначе он начинается с индекса 1. -
arrayнеобязательныйпередача
reduce()массив
initialValueнеобязательный
Как первый звонокcallbackЗначение первого параметра функции. Если начальное значение не указано, будет использован первый элемент массива. Вызов сокращения для пустого массива без начального значения вызовет ошибку.
3.2 Возвращаемое значение
Результат совокупной обработки функции
3.3 описывать
reduceВыполнить для каждого элемента массива по очередиcallbackФункция, исключающая элементы массива, которые были удалены или которым никогда не присваивалось значение, принимает четыре аргумента:
accumulator 累计器currentValue 当前值currentIndex 当前索引array 数组
Когда функция обратного вызова выполняется в первый раз,accumulatorа такжеcurrentValueЕсть два случая для значения :
- == если вызывается
reduce()предоставляется, когдаinitialValue,accumulatorстоимостьinitialValue,currentValueПринять первое значение в массиве; == - == если не указано
initialValue,Такaccumulatorвзять первое значение в массиве,currentValueВозьмите второе значение в массиве. ==
**Примечание.** Если не указано
initialValue, reduce выполнит метод обратного вызова, начиная с индекса 1, пропуская первый индекс. если предусмотреноinitialValue, начиная с индекса 0.
если массив пуст и не указанinitialValue, броситTypeError(независимо от местонахождения) и не обеспечиваетinitialValue, или предоставитьinitialValueно массив пуст, то будет возвращено это уникальное значение иcallbackвыполняться не будет.
3.4 Как работает сокращение?
Если вы запустите следующий разделreduce()Код:
[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, currentIndex, array){
return accumulator + currentValue;
});
Обратный вызов вызывается четыре раза, а параметры и возвращаемые значения каждого вызова следующие:
callback |
accumulator |
currentValue |
currentIndex |
array |
return value |
|---|---|---|---|---|---|
| first call | 0 |
1 |
1 |
[0, 1, 2, 3, 4] |
1 |
| second call | 1 |
2 |
2 |
[0, 1, 2, 3, 4] |
3 |
| third call | 3 |
3 |
3 |
[0, 1, 2, 3, 4] |
6 |
| fourth call | 6 |
4 |
4 |
[0, 1, 2, 3, 4] |
10 |
Зависит отreduceВозвращаемое значение будет последним возвращаемым значением обратного вызова (10).
вы также можете использоватьстрелочная функциявместо полной функции. Код ниже выдаст тот же результат, что и приведенный выше код:
[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr );
Если вы намерены предоставить начальное значение какreduce()Второй параметр метода, это запущенный процесс и результат:
[0, 1, 2, 3, 4].reduce((accumulator, currentValue, currentIndex, array) => {
return accumulator + currentValue
}, 10)
callback |
accumulator |
currentValue |
currentIndex |
array |
return value |
|---|---|---|---|---|---|
| first call | 10 |
0 |
0 |
[0, 1, 2, 3, 4] |
10 |
| second call | 10 |
1 |
1 |
[0, 1, 2, 3, 4] |
11 |
| third call | 11 |
2 |
2 |
[0, 1, 2, 3, 4] |
13 |
| fourth call | 13 |
3 |
3 |
[0, 1, 2, 3, 4] |
16 |
| fifth call | 16 |
4 |
4 |
[0, 1, 2, 3, 4] |
20 |
В этой ситуацииreduce()Возвращаемое значение20.
3.4 Уменьшить практику
3.4.1 Нет оригинальных параметров
// 1.reduce没有原始参数
let arr = [10, 15, 8, 6, 11, false, 'hello'];
let newArr = arr.reduce((previousValue, currentValue, index, arr) => {
console.log(previousValue, currentValue, index, arr);
return previousValue = previousValue + currentValue;
})
console.log(newArr); //50hello
3.4.2 С примитивными параметрами
// 2.reduce有原始参数
let newArr2 = arr.reduce((previousValue, currentValue, index, arr) => {
return previousValue += currentValue;
}, 10);
console.log(newArr2); //60hello
3.4.3 Накапливает значения в массиве объектов
Для накопления значений, содержащихся в массиве объектов, необходимо предоставить начальные значения, чтобы каждый элемент правильно проходил через вашу функцию.
var initialValue = 0;
var sum = [{x: 1}, {x:2}, {x:3}].reduce(
(accumulator, currentValue) => accumulator + currentValue.x
,initialValue
);
console.log(sum) // logs 6
3.4.4 Преобразование 2D-массива в 1D
var flattened = [[0, 1], [2, 3], [4, 5]].reduce(
function(a, b) {
return a.concat(b);
},
[]
);
// flattened is [0, 1, 2, 3, 4, 5]
4. Найти элементы массива (найти)
**find()**Метод возвращает массив, который удовлетворяет предоставленной тестовой функции.значение первого элемента. в противном случае вернутьсяundefined
4.1грамматика
arr.find(callback[, thisArg])
4.2 параметр
-
callbackФункция, выполняемая для каждого элемента массива, с тремя аргументами:
elementТекущий пройденный элемент.indexнеобязательный Индекс, к которому в настоящее время осуществляется переход.arrayСам необязательный массив. -
thisArgнеобязательныйиспользуется при выполнении обратного вызова
thisОбъект.
4.3 возвращаемое значение
значение первого элемента в массиве, которое удовлетворяет предоставленной тестовой функции, в противном случае возвращаетсяundefined.
4.4 описывать
findМетод выполняется один раз для каждого элемента массива.callbackработать до тех пор, пока обратный вызов не вернетtrue. Когда такой элемент найден, метод немедленно возвращает значение элемента, в противном случае возвращаетundefined. Уведомлениеcallback Функция вызывается для каждого индекса в массиве, т.е. из0 прибытьlength - 1, а не только те индексы, которым присвоены значения, а это означает, что для разреженных массивов этот метод менее эффективен, чем те, которые обходят только индексы, имеющие значения.
callbackФункции имеют 3 параметра: значение текущего элемента, индекс текущего элемента и сам массив.
если предусмотреноthisArgпараметр, то он будет использоваться как каждыйcallbackкогда функция выполняетсяthis, если не указано, используйтеundefined.
findМетод не изменяет массив.
в первый звонокcallbackфункция будет определять диапазон индексов элементов, поэтому вfindНовые элементы, добавленные в массив после начала выполнения метода, не будутcallbackфункция для доступа. Если один из массивов не былcallbackЗначение элемента, к которому обращается функция, равноcallbackфункция изменилась, то когдаcallbackКогда функция обращается к нему, его значением будет текущее значение, полученное в соответствии с его индексом в массиве. Доступ к удаленному элементу все равно будет, но его значение уже не определено.
4.5 случай
let arr = [10, 5, 6, 80, 12];
let element = arr.find((currentValue, index, arr) => {
return currentValue > 70
})
console.log(element); //80
5. Найти индекс элемента массива (findIndex)
Метод indIndex() возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной тестовой функции. Возвращает -1, если соответствующий элемент не найден.
5.1грамматика
arr.findIndex(callback[, thisArg])
5.2параметр
-
callbackДля каждого элемента в массиве будет выполняться функция обратного вызова, и при выполнении автоматически передаются следующие три параметра:
elementтекущий элемент.indexИндекс текущего элемента.arrayпередачаfindIndexмассив . -
thisArgНеобязательный. воплощать в жизнь
callbackтак какthisстоимость объекта.
5.3 возвращаемое значение
массив, предоставив первый элемент тестовой функциипоказатель. В противном случае вернуть -1
5.4 описывать
findIndexметод для индексации каждого массива в массиве0..length-1(включено) выполнить один разcallbackфункционировать до тех пор, покаcallbackФункция возвращает истинное значение (приведенное кtrue) Стоимость. Если он находит такие элементы,findIndexнемедленно возвращает индекс элемента. Если обратный вызов никогда не возвращает значение true или массивlengthравно 0, тогдаfindIndexВозвращает -1. В отличие от некоторых других методов массива (например, Array#some), в разреженных массивах функция обратного вызова вызывается даже для индекса записи, не существующей в массиве.
Функция обратного вызова вызывается с тремя параметрами: значением элемента, индексом элемента и просматриваемым массивом.
еслиthisArgпараметры предоставляютсяfindIndex, будет принято какthisИспользуется каждый раз, когда вызывается функция обратного вызова. Если не указано, будет использоватьсяundefined.
findIndexВызываемый массив не изменяется.
в первый звонокcallbackфункция будет определять диапазон индексов элементов, поэтому вfindIndexНовые элементы, добавленные в массив после начала выполнения метода, не будутcallbackфункция для доступа. Если один из массивов не былcallbackЗначение элемента, к которому обращается функция, равноcallbackфункция изменилась, то когдаcallbackКогда функция обращается к нему, его значением будет текущее значение, полученное в соответствии с его индексом в массиве. Удаленные элементы по-прежнему будут доступны.
5.5 Найти индекс первого простого элемента в массиве
// 以下示例查找数组中素数的元素的索引(如果不存在素数,则返回-1)。
function isPrime(element, index, array) {
var start = 2;
while (start <= Math.sqrt(element)) { //获取平方根
if (element % start++ < 1) {
return false;
}
}
return element > 1;
}
console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
6. Метод оценки: == по крайней мере 1 элемент == прошел предоставленный функциональный тест (некоторые)
**some()**Метод проверяет, проходит ли хотя бы один элемент в массиве предоставленный функциональный тест. Он возвращает значение логического типа.
**Примечание.** Если вы тестируете пустой массив, он в любом случае возвращает
false.
6.1грамматика
arr.some(callback(element[, index[, array]])[, thisArg])
6.2параметр
-
callbackФункция для проверки каждого элемента принимает три аргумента:
elementЭлемент массива, который обрабатывается.indexЗначение индекса обрабатываемого элемента в необязательном массиве.arrayнеобязательныйsome()Массив для вызова. -
thisArgнеобязательныйвоплощать в жизнь
callbackиспользуется, когдаthisстоимость.
6.3 возвращаемое значение
Если хотя бы один элемент в массиве пройдет проверку callback-функции, он вернет **true**; Все элементы вернут false, если не пройдут проверку callback-функции.
6.4 описывать
some()Сделайте это один раз для каждого элемента в массивеcallbackпока не найдет такую, что обратный вызов возвращает значение "true" (то есть значение, которое можно преобразовать в логическое значение true ). Если такое значение найдено,some()вернется немедленноtrue. иначе,some()вернутьfalse.callbackОн будет вызываться только для индексов, которые «имеют значение», а не для индексов, которые были удалены или которым никогда не присваивалось значение.
callbackОн вызывается с тремя параметрами: значением элемента, индексом элемента и массивом, который необходимо пройти.
еслиthisArgаргументы передаются функции some(), которая будет использоваться как вызывающаяcallbackизthisстоимость. В противном случае егоthisзначение будетundefined.thisЗначение наконец наблюдается через обратный вызов, в соответствии сthe usual rules for determining the this seen by a functionИз этого правила решения определить.
some()Массив не изменяется при вызове.
some()Диапазон элементов, пройденных при первом вызовеcallback, было определено ранее. вызовsome()Значения, которые добавляются в массив позже, не будутcallbackдоступ к. Если элемент в массиве, который существует и к которому не обращались,callbackизменено, оно передаетсяcallbackЗначениеsome()Доступ к моменту его значения. Были удалены элементы не будут доступны.
6.5 Случаи
6.5.1 Проверить значение элемента массива
В следующем примере проверяется, превышает ли какой-либо элемент массива значение 10.
function isBiggerThan10(element, index, array) {
return element > 10;
}
[2, 5, 8, 1, 4].some(isBiggerThan10); // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true
6.5.2 Используйте стрелочные функции для проверки значения элемента массива
стрелочная функцияТот же вариант использования может быть достигнут с более кратким синтаксисом.
[2, 5, 8, 1, 4].some(x => x > 10); // false
[12, 5, 8, 1, 4].some(x => x > 10); // true
6.5.3 Определить, есть ли определенное значение в элементе массива
имитация в данном случаеincludes()метод, если элемент существует в массиве, функция обратного вызова возвращает значениеtrue :
var fruits = ['apple', 'banana', 'mango', 'guava'];
function checkAvailability(arr, val) {
return arr.some(function(arrVal) {
return val === arrVal;
});
}
checkAvailability(fruits, 'kela'); // false
checkAvailability(fruits, 'banana'); // true
6.5.4 Используйте функции стрелок, чтобы проверить, существует ли значение в элементе массива
var fruits = ['apple', 'banana', 'mango', 'guava'];
function checkAvailability(arr, val) {
return arr.some(arrVal => val === arrVal);
}
checkAvailability(fruits, 'kela'); // false
checkAvailability(fruits, 'banana'); // true
6.5.5 Преобразование любого значения в логический тип
var TRUTHY_VALUES = [true, 'true', 1];
function getBoolean(value) {
'use strict';
if (typeof value === 'string') {
value = value.toLowerCase().trim();
}
return TRUTHY_VALUES.some(function(t) {
return t === value;
});
}
getBoolean(false); // false
getBoolean('false'); // false
getBoolean(1); // true
getBoolean('true'); // true
7. Проверьте, могут ли == все элементы == в массиве пройти тест указанной функции (каждый)
**every()**Метод Проверяет, можно ли проверить все элементы массива с помощью указанной функции. Он возвращает логическое значение.
Уведомление: Если получен пустой массив, этот метод вернет значение во всех случаях.
true.
7.1 грамматика
arr.every(callback(element[, index[, array]])[, thisArg])
7.2 параметр
-
callbackФункция для проверки каждого элемента, которая может принимать три аргумента:
elementТекущее значение для тестирования.indexДополнительный индекс текущего значения для использования для теста.arrayнеобязательный вызовeveryтекущий массив . -
thisArgвоплощать в жизнь
callbackиспользуется, когдаthisстоимость.
7.3 возвращаемое значение
Если каждый возврат функции обратного вызоваtruthyЗначение, возврат**true**, иначе возврат**false**.
7.4 описывать
everyметод выполняется один раз для каждого элемента массиваcallbackработать до тех пор, пока не найдетcallbackвернутьfalsyЭлементы. Если такой элемент найден,everyметод вернется немедленноfalse. иначе,callbackвозврат для каждого элементаtrue,everyвернусьtrue.callbackБудет вызываться только для тех индексов, которым уже присвоено значение. Не вызывается для индексов, которые удалены или которым никогда не присваивалось значение.
callbackВ момент вызова можно передать три параметра: значения элементов, индексы элементов, исходные числовые группы.
еслиeveryобеспечитьthisArgпараметр, параметр является вызовомcallbackвремяthisстоимость. Если этот параметр опущен, тоcallbackкогда звонятthisзначение, глобальный объект в нестрогом режиме, переданный в строгом режимеundefined. смотрите подробностиthisВход.
everyИсходный массив не будет изменен.
everyИтерация по диапазону элементов в первом вызовеcallbackЭто было определено ранее. вызовeveryЭлементы, добавленные в массив позже, не будутcallbackдоступ к. Если элементы, присутствующие в массиве, изменены, они переходят вcallbackЗначениеeveryдоступ к их стоимости в данный момент. Доступ к удаленным элементам или элементам, которым никогда не присваивалось значение, невозможен.
everyПодобно «всем» в математике, он вернется только тогда, когда все элементы удовлетворят условиям.true. Из-за этого, если передан пустой массив, он все равно вернетсяtrue. (Этот случай принадлежитбезусловно правильный: именно из-запустая коллекцияЭлементов нет, поэтому все элементы в нем удовлетворяют заданным критериям. )
7.5 Случаи
7.5.1Определить размер всех элементов массива
В следующем примере проверяется, все ли элементы в массиве больше 10.
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
7.5.2 Используйте стрелочные функции
стрелочная функцияПредоставляет более короткий синтаксис для описанного выше процесса обнаружения.
[12, 5, 8, 130, 44].every(x => x >= 10); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true
8. Метод сортировки
**sort()**методалгоритм на местеСортирует элементы массива и возвращает массив. Порядок сортировки по умолчанию создается, когда элементы преобразуются в строки, а затем сравниваются их последовательности значений единиц кода UTF-16.
8.1 грамматика
arr.sort([compareFunction])
8.2 параметр
-
compareFunctionнеобязательныйИспользуется для указания функции для сортировки в определенном порядке. Если он опущен, элементы сортируются по положению Unicode каждого символа преобразованной строки.
firstElПервый элемент, используемый для сравнения.secondElВторой элемент для сравнения.
8.3 возвращаемое значение
отсортированный массив. Обратите внимание, что массив сортируется на месте, а не копируется.
8.4 описывать
если не указаноcompareFunction, то элементы сортируются в соответствии с юникодной позицией символов преобразованной строки. Например, «Банан» будет сортироваться перед «вишней». Когда числа отсортированы от меньшего к большему, 9 стоит перед 80, но поскольку (не указаноcompareFunction), сравниваемые числа сначала преобразуются в строки, поэтому «80» стоит перед «9» в порядке Unicode.
если указаноcompareFunction, то массив сортируется по возвращаемому значению вызова функции. т. е. a и b — два сравниваемых элемента:
-
если
compareFunction(a, b)меньше 0, то a будет располагаться перед b; -
если
compareFunction(a, b)равно 0 , относительные положения a и b неизменны. Примечание. Такое поведение не гарантируется стандартом ECMAScript и не гарантируется всеми браузерами (например, Mozilla до 2003 г.); -
если
compareFunction(a, b)Больше 0, b будет отсортировано перед a. -
compareFunction(a, b)Всегда должен возвращать один и тот же результат сравнения для одних и тех же входных данных, иначе результат упорядочивания будет неопределенным.
Итак, формат функции сравнения следующий:
function compare(a, b) {
if (a < b ) { // 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b ) {
return 1;
}
// a must be equal to b
return 0;
}
Чтобы сравнивать числа вместо строк, функция сравнения может просто вычесть b из a, следующая функция отсортирует массив в порядке возрастания.
function compareNumbers(a, b) {
return a - b;
}
sortможно использовать методфункциональное выражениеУдобно писать:
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
也可以写成:
var numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers);
// [1, 2, 3, 4, 5]
Объекты можно сортировать по свойству:
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic' },
{ name: 'Zeros', value: 37 }
];
// sort by value
items.sort(function (a, b) {
return (a.value - b.value)
});
// sort by name
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // ignore upper and lowercase
var nameB = b.name.toUpperCase(); // ignore upper and lowercase
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// names must be equal
return 0;
});
8.5 Случаи
8.5.1 Алфавитная сортировка
Методом сортировки по умолчанию является алфавитная сортировка, которая организована в соответствии с 26 буквами.При сравнении слов первая буква сравнивается первой, если первая буква совпадает, сравнивается вторая буква и так далее.
// 1.字母排序(sort默认排序)
var arr = ["za","zb","a","b","xc","xa"];
arr.sort();
console.log(arr);
// 运行结果:["a", "b", "xa", "xc", "za", "zb"]
8.5.2.sort числовая сортировка
Параметры в sort() могут быть функциями метода, которые могут выводить результаты в порядке возрастания и убывания.
//2.sort数字排序
var array = [100,10,50,800,320,34,53];
array.sort(function(a,b){
//a-b升序,b-a降序
return b-a;
});
console.log(array);
//运行结果:[800, 320, 100, 53, 50, 34, 10]
**Примечание:** где a и b — элементы в этом массиве, если это a-b, это означает возрастающий порядок, а если это b-a, это означает убывающий порядок.
8.5.3 Сортировка объектов массива
Самое главное это сортировка атрибутов объекта.Когда бэкенд дает нам много данных на фронтенде а сортировки нет, то нам обычно приходится их переупорядочивать, а данные отдаваемые бэкендом зачастую это несколько слоев, а не так же просто, как и предыдущий массив, на данный момент нам нужно использовать свойство объекта в сортировке для сортировки
// 3.对象属性排序
var obj = [
{name:"lucy", num:400},
{name:"nancy", num:110},
{name:"maria", num:200}
];
obj.sort(compare("num"));
console.log(obj);
//数组对象属性值排序
function compare(property){
return function(a,b){
//value1 - value2升序
//value2 - value1降序
var value1 = a[property];
var value2 = b[property];
return value1 - value2;//升序
}
}
运行结果:
[
{name:"nancy", num:110},
{name:"maria", num:200},
{name:"lucy", num:400}
]
**Примечание. Параметр в **compare() должен быть именем атрибута объекта, и объекты, которые вы хотите сравнить, должны иметь это имя атрибута, иначе произойдет ошибка. Вышеупомянутое является личным резюме, если в более поздний период будет какое-либо дополнение, оно будет выпущено снова.