Структура данных — массив

алгоритм структура данных

Create by jsliang on 2019-07-31 11:22:27
Recently revised in 2019-08-15 16:00:00

Массивы — простейшая структура данных в памяти.

каталог

Чем отличается передок без закидывания от соленой рыбы?

содержание
каталог
2 Предисловие
2.1 Зачем использовать массив?
2.2 Как создать и инициализировать массив?
2.3 Как получить доступ к массиву?
2.4 Двумерные, трехмерные и даже многомерные массивы и как получить к ним доступ?
2.5 Как насчет прогрева корпуса?
2.6 Сомнение?
Добавление, удаление, модификация и проверка трех массивов и их рабочих приложений
3.1 Новые операции для массивов
3.2 Операции удаления и изменения массива
  3.2.1 удалить и изменить splice()
  3.2.2 Удалить и изменить slice()
  3.2.3 filter() для удаления и модификации
3.3 Операция запроса массива
Общие точки знания четырех массивов
4.1 push() — добавить элементы в конце
4.2 unshift() — добавить элементы в начало
4.3 pop() — удалить элемент в конце
4.4 shift() - удалить элемент в начале
4.5 splice() — добавление, удаление и изменение элементов
4.6 concat() — выравнивание двух массивов
4.7 filter() — фильтрация элементов массива
4.8 forEach() — Обход исходного массива
4.9 join() — преобразование массива в строку
4.10 indexOf() — найти первым по порядку
4.11 lastIndexOf() — найти первый индекс в обратном порядке
4.12 map () — Траверс возвращает новый массив
4.13 reverse() — перевернуть элементы массива
4.14 slice() — найти элемент в указанной позиции
4.15 sort() — сортировка массива
4.16 toString() — массив в строку
4.17 include() — Массив содержит элемент
4.18 fill() — заполнение массива
4.19 reduce() — накопление массива
4.20 find() — найти элемент массива
4.21 findIndex() — поиск индекса элемента
5 Резюме

2 Предисловие

Назад к содержанию

Если вам случится увидеть эту статью, вы хотели бы знатьАлгоритмы и структуры данныхпримерномножествознание.

Итак, я надеюсь, что у друзей, увидевших эту статью, есть:

  1. Базовые знания JavaScript.
  2. Немного о массивах и их использовании.

В то же время, я надеюсь, что друзья, прочитавшие эту статью, усвоили:

  1. Базовые знания массивов.
  2. Добавление массива, удаление, модификация и проверка
  3. Общие сведения о массивах

но,jsliangНевозможно определить, действительно ли маленький партнер обладает вышеуказанными знаниями (предварительными условиями), поэтому в предисловии будет кратко представлен массив, и я надеюсь сначала сделать немного научно-популярных, чтобы облегчить обсуждение позже.

Если ваши друзья уже знакомы с базовыми знаниями, связанными с массивами, вы можете пропустить раздел [Предисловие];

Если ваши друзья не понимают или хотят просмотреть разминку, вы можете медленно посмотреть вниз.

Более захватывающе, добро пожаловать, друзья, чтобы подписаться на публичный аккаунт ниже или перейти наjsliangГитхаб:GitHub.com/l ian Jun Ron…

2.1 Зачем использовать массив?

Назад к содержанию

Предполагая, что вы пишете код для перечисления часов упражнений с понедельника по воскресенье, вы можете написать:

let Monday = 1,
  Tuesday = 2,
  Wednesday = 3,
  Thursday = 4,
  Friday = 5,
  Saturday = 6,
  Sunday = 7;

Это всего лишь одна неделя данных.

Если вы хотите подсчитать данные за год, это слишком громоздко, в конце концов, назвать 365 полей может быть крайне неудобно.

Итак, есть массив:

let exercise = [1, 2, 3, 4, 5, 6, 7];

Не становится ли это легче.

2.2 Как создать и инициализировать массив?

Назад к содержанию

let a = [];

let b = new Array();

Это все осуществимо.

Если вы хотите инициализировать массивы длиной или массивы со значениями в начале:

let a = [1, 2, 3]; // [1, 2, 3]

let b = new Array(3); // [undefined, undefined, undefined]

let c = new Array([1, 2, 3]); // [1, 2, 3]

let d = new Array(3).fill(1); // [1, 1, 1]

let e = new Array(3).fill([]); // [[], [], []]

Конечно, последние два проходятfill()Создан массив, рекомендуется столкнутьсяfill()Узнайте больше о методе.

Массив, образованный переменной e, будет проблематичным~

2.3 Как получить доступ к массиву?

Назад к содержанию

let a = [1, 2, 3];
console.log(arr[0]); // 1
console.log(arr[1]); // 2
console.log(arr[2]); // 3

Помните, что индексы массива начинаются с 0.

Если программист признается вам, что вы 0-й человек в его сердце... вам следует отказать "ему", он уже сошел с ума и его уже не спасти.

2.4 Двумерные, трехмерные и даже многомерные массивы и как получить к ним доступ?

Назад к содержанию

мы обычно используем[1, 2, 3]Эта форма называется одномерным массивом.

А если в массиве есть вложенные массивы, то каждый дополнительный уровень вложенности будет добавлять размерность, например:

Двумерный массив

let a = [[1, 2, 3], [4, 5]]; // 二维数组

// 访问二维数组
for (let i = 0; i < a.length; i++) {
  for (let j = 0; j < a[i].length; j++) {
    console.log(a[i][j]);
  }
}
// 1
// 2
// 3
// 4
// 5

трехмерный массив

let b = [[1, 2, [3, 4]], [5, 6]]; // 三维数组

// 访问三维数组
for (let i = 0; i < b.length; i++) {
  for (let j = 0; j < b[i].length; j++) {
    for (let k = 0; k < b[i][j].length; k++) {
      console.log(b[i][j][k]);
    }
  }
}
// 3
// 4

Что касается многомерных массивов, то мелкие партнеры могут рассчитывать сами.

2.5 Как насчет прогрева корпуса?

Назад к содержанию

Здесь выложите два кода, чтобы всех разогреть.

Пройти последовательность Фибоначчи

const fibonacciSequence = [1, 1, 2, 3, 5, 8, 13];

for (let i = 0; i < fibonacciSequence.length; i++) {
  console.log(fibonacciSequence[i]);
}

// 1 1 2 3 5 8 13

Реализовать последовательность Фибоначчи

const fibonacciSequence = [1, 1];

for (let i = 2; i < 20; i++) {
  fibonacciSequence[i] = fibonacciSequence[i - 1] + fibonacciSequence[i - 2];
}

console.log(fibonacciSequence);

// [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]

2.6 Навязчивые сомнения?

Назад к содержанию

Хотя массив является простейшей структурой данных памяти, есть некоторые ямки, на которые нужно обратить внимание, чтобы не попасть в ловушку и не иметь возможности выпутаться, например: передача по значению и передача по адресу.

// 传值
let str1 = '1';
str2 = str1;
str2 = '2';
console.log(str1); // 1
console.log(str2); // 2

// 传址
let arr1 = [1, 2, 3];
arr2 = arr1;
arr2[0] = 4;
console.log(arr1); // [4, 2, 3]
console.log(arr2); // [4, 2, 3]

просить:jsliangЧто вы думаете о передаче по значению и передаче по адресу? Можете ли вы уточнить?

A: Посмотрите на мою статью-интервьюПодготовка к интервью jsliang 2019Или давайте перейдем к соответствующим точкам знаний под Baidu, ведь наша основная цель не в том, чтобы рассказать об этой точке знаний, она введена здесь, чтобы разогреть маленьких друзей.

Если друг считает необходимым написать подробный список разминок, не забудьте написать мне в личные сообщения.

Чтобы узнать больше о проблемах с массивами или связанных с ними скрытых точках, позвольте мне добавлять их, когда я думаю о них или когда мои друзья упоминают о них.

Добавление, удаление, модификация и проверка трех массивов и их рабочих приложений

Назад к содержанию

воспитыватьАлгоритмы и структуры данных, Многие фронтенд-друзья могут сразу отреагировать: "Бля, это полезно", "Зачем ты это делаешь в интервью, и не пишешь, если...иначе..."...

EnM ... действительно полезно.

jsliangВ сочетании с добавлением, удалением, изменением и проверкой массивов и сценариями их использования в работе я расскажу вам о магии массивов.

3.1 Новые операции для массивов

Назад к содержанию

Нечего сказать, закрой дверь, поставь, поставь код:

let arr = [1, 2, 3];

// 通过 push() 方法
arr.push(4); // [1, 2, 3, 4]

// 通过 length 属性
arr[arr.length] = 5; // [1, 2, 3, 4, 5]

Есть два способа добавления элементов в массив:

  • один черезpush()метод, который напрямую добавляет элемент в последний бит массива.
  • Другой - с использованием массиваlengthсвойство, которое может отображать длину массива, иarr[arr.length]То есть добавить длину к его максимальной длине.

Поскольку мы вставляли новые элементы в конец массива двумя способами, есть ли способ вставить новые элементы в начало массива?

имеют!

let arr = [3, 4, 5];

// 通过 unshift 方法
arr.unshift(2); // [2, 3, 4, 5]

// 通过遍历数组
for (let i = arr.length; i >= 0; i--) {
  arr[i] = arr[i - 1];
}
arr[0] = 1;
// [1, 2, 3, 4, 5]

Очень хорошо, с помощью этих четырех методов мы освоили добавление элементов в начало и конец массива.

Так, какова их роль в работе?

В настоящее время наиболее используемым являетсяpush()операции, обычно используемые для добавления элементов в массив.

Пример распространенного сценария: добавление строки данных в таблицу.

содержание данных
новый Первая строка данных — jsliang
новый Второй ряд данных - балка шлак шлак

jsliangПопробуйте нарисовать таблицу самостоятельно, она слишком мала для отображения, просто используйте Markdown, чтобы продемонстрировать это.

Как и выше, когда мы нажимаем кнопку [Добавить], мы можем напрямую добавить строку данных под таблицей.

И если этоunshift(), работу пока не трогал.Если есть друзья выложите пожалуйста сцену приложения~

3.2 Операции удаления и изменения массива

Назад к содержанию

первый,jsliangЯ чувствую, что API-интерфейс массива, используемый операциями удаления и изменения, в определенной степени очень согласован, поэтому я написал его вместе:

  • splice()
  • slice()
  • filter()

Здесь мы представляем три метода работы.

3.2.1 удалить и изменить splice()

Назад к содержанию

Для внешнего интерфейса массивsplice()Метод является панацеей, его можно применять для добавления, изменения и удаления этих сценариев.

Итак, как использоватьsplice()Как насчет добавления, изменения и удаления?

Давайте сначала разберемсяsplice()характеристика:

var months = ['Jan', 'March', 'April', 'June'];

// 新增操作
months.splice(1, 0, 'Feb');
// ['Jan', 'Feb', 'March', 'April', 'June']

// 修改操作
months.splice(4, 1, 'May');
// ['Jan', 'Feb', 'March', 'April', 'May']

// 删除操作
months.splice(4, 1);
// ['Jan', 'Feb', 'March', 'April']

Как указано выше,splice()Синтаксис:array.splice(start, deleteCount, item1, item2, ...).

  1. startэто начальная координата массива
  2. deleteCountДля того, чтобы нужно было удалить число из начальной координаты, оно может быть 0, что означает не удалять
  3. itemЭлементы, которые необходимо добавить.

Итак, на данный момент мои друзья должны быть правыsplice()иметь глубокое понимание.

Давайте поговорим оsplice()Для операций модификации сценарии использования в работе:

Изменить данные строки в таблице

let list = [
  { id: '1', name: 'jsliang' },
  { id: '2', name: '梁峻荣' },
  { id: '3', name: 'JavaScriptLiang' },
];

function addData(rowIndex) {
  list.splice(rowIndex, 0, {
    id: '4',
    name: '梁渣渣',
  });
}

addData(1);

console.log(list);
// [
//   { id: '1', name: 'jsliang' },
//   { id: '4', name: '梁渣渣' },
//   { id: '2', name: '梁峻荣' },
//   { id: '3', name: 'JavaScriptLiang' },
// ]

Как и выше, мы хотим добавить данные в указанное место (addData(n)), то используемsplice()Работает над ним, модифицируя тем самым исходный массив.

3.2.2 Удалить и изменить slice()

Назад к содержанию

как иsplice()разница в одну буквуslice(), и насколько он превосходен?

первый, популяризируем:

  • splice(): операция повлияет на исходный массив
  • slice(): операция не повлияет на исходный массив

Что это значит? Я полагаю, что многие мелкие партнеры увидят множество различий, когда посмотрят онлайн-стратегии, связанные с массивами:Этот метод повлияет на исходный массив, этот метод не повлияет на исходный массив... и т.д..

На самом деле это довольно легко понять: я хочу съесть два торта, но теперь у меня есть только один. Если я все еще думаю о своем похудении, то я могу разрезать этот торт на две части, поэтому я съедаю два торта (влияя на исходный массив); если я думаю, что два торта не прибавят в весе, то я просто следую этому торту и купить еще один (не затрагивая исходный массив).

Конечно, здесь все дело в модификации.slice()Есть еще что-то, что влияет на массив:

const str = 'jsliang';
str.slice(0, 2); // 'js'
str.slice(2); // 'liang'

дляslice()Например, его параметры:str.slice(beginSlice, endSlice). в:

  • beginSlice: извлечение символов из исходной строки, начиная с этого индекса (база 0).
  • endSlice: конечная позиция (на основе 0), если она не передана, по умолчанию используется конец массива.

Уведомление,splice()Второй параметр — это количество затронутых массивов, аslice()Второй аргумент - это конечная позиция, поэтомуslice()Общее написание такое:slice(index, index + length), то есть положение, которое необходимо изменить (индекс), и продолжительность его воздействия (длина).

Очень хорошо, после разговора об этой кучке ерунды, поговорим о сценариях использования на работе:

let list = [
  { id: '1', name: 'jsliang' },
  { id: '2', name: '梁峻荣' },
];

function insertData(rowId) {
  list = [
    ...list.slice(0, list.findIndex(item => item.id === rowId) + 1),
    {
      id: '3',
      name: '',
    },
    ...list.slice(list.findIndex(item => item.id === rowId) + 1),
  ]
}

insertData('1');

console.log(list);
// [
//   { id: '1', name: 'jsliang' },
//   { id: '3', name: '' },
//   { id: '2', name: '梁峻荣' },
// ]

Помните, что мы сказали выше сslice()внести изменения,также влияет на исходный массив? Да, в этом коде мы видим, что мы объединяем предыдущий массив в новый массив, и пусть этот элемент указывает на адрес нового массива.

Конечно, это не важно, давайте поговорим о сценарии его использования: когда нам нужно изменить строку таблицы, мы передаем ее уникальное значение (id) в прошлом, а затем методinsertDataНашел эту строку на основе переданного идентификатора, изменил ее.

Если вы чувствуете, что это не так просто понять, вы можете попробовать следующееrowIdзаменитьindex, что является мудрым выбором.

3.2.3 filter() для удаления и модификации

Назад к содержанию

первый,jsliangдляfilter()Этот метод также используется не очень часто:

У меня есть друг, которого зовутfilter(), каждый раз, когда я его использую, это как звонить моему другу: "фильтруй! У меня есть кое-что, чтобы попросить тебя о помощи~"

Однако в составе командывинт, в бизнесе написано много, а вы все равно будете подвергаться коду ваших коллег, так что разбираться в нем все же необходимо:

function isBigEnough(element) {
  return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// [12, 130, 44]

// 如果你喜欢用 ES6 的箭头函数
const number = [12, 5, 8, 130, 44];
const filterNumber = number.filter(item => item >= 10);
// [12, 130, 44]

Очень хорошо, говоря об этом, кстати, пройдемся по научно-популярным.filter()Этот метод:

  • грамматика:arr.filter(callback)

  • callback: функция для проверки каждого элемента массива. вернутьtrueУказывает, что элемент проходит проверку, сохранить элемент,falseне сохраняется. Он возвращает массив переданных элементов или пустой массив []. Он принимает следующие три параметра:

    • element: элемент, который в настоящее время обрабатывается в массиве
    • index: индекс обрабатываемого элемента в массиве.
    • array: называетсяfilterсам массив.

Так что более полныйfilter()Это можно написать так:

const number = [12, 5, 8, 130, 44];
const filterNumber = number.filter((item, index, array) => {
  console.log(array);
  return item >= 10 && index > 3;
});
// 输出 5 次 [12, 5, 8, 130, 44]
// 最终 filterNumber 的值为 [44]

Хорошо, введение закончено, давайте посмотрим на сценарий приложения:

let list = [
  { id: '1', name: 'jsliang' },
  { id: '2', name: '梁峻荣' },
  { id: '3', name: 'JavaScriptLiang' },
];

function changeData(id, newObj) {
  list = [...list.filter(item => item.id !== id), newObj];
}

changeData('2', {
  id: '4',
  name: '梁渣渣',
});
[
  {id: "1", name: "jsliang"},
  {id: "3", name: "JavaScriptLiang"},
  {id: "4", name: "梁渣渣"},
]

Таким образом, мы будемidна 2梁峻荣Измените эту строку наidна 4梁渣渣.

3.3 Операция запроса массива

Назад к содержанию

После разговора о добавлении, удалении и изменении выше, давайте поговорим об операциях запросов в конце.

По сравнению с приведенной выше темой, существует больше форм запроса.

Например, я хочу узнать идентификаторы всех объектов в массиве:

let list = [
  { id: '1', name: 'jsliang' },
  { id: '2', name: '梁峻荣' },
  { id: '3', name: 'JavaScriptLiang' },
];

const ids = list.map(item => item.id);
// ["1", "2", "3"]

Понятно, что это тоже запрос, и он очень практичен в работе, ведь типа Ant Design и т.п., в случае множественного выбора в выпадающем списке, необходимо найти id данные.

Или я хочу знатьJavaScriptПод каким значением индекса он появляется и каков его идентификатор:

let list = [
  { id: '1', name: 'jsliang' },
  { id: '2', name: '梁峻荣' },
  { id: '3', name: 'JavaScriptLiang' },
];

const id1 = list[list.findIndex(item => item.name === 'JavaScriptLiang')].id;
// '3'

// 当然有更快速的
const id2 = list.find(item => item.name === 'JavaScriptLiang').id;
// '3'

Конечно, JavaScript имеет гораздо больше общего с запросом данных в массиве.

Конечно, во всяком случае,jsliangПо-прежнему настоятельно рекомендуется записать эти методы и опробовать их на работе, чтобы вы могли совершенствоваться.

Общие точки знания четырех массивов

Назад к содержанию

становится скучноПятилетний вступительный экзамен в колледж, трехлетняя симуляцияОбучение тестовому вопросу, я надеюсь, что после понимания определенного метода друзья смогут провести соответствующее обучение через LeetCode под ним, чтобы освоить общие точки знаний массивов.

4.1 push() — добавить элементы в конце

Назад к содержанию

push()Метод добавляет один или несколько элементов в конец массива и возвращает новую длину массива.

let arr = [1, 2, 3];

// 通过 push() 方法
arr.push(4); // [1, 2, 3, 4]

Практический LeetCode:

4.2 unshift() — добавить элементы в начало

Назад к содержанию

unshift()Метод добавляет один или несколько элементов в начало массива и возвращает новую длину массива.

let arrA = ['1'];
arrA.unshift('0');
console.log(arrA); // ['0', '1']

let arrB = [4, 5, 6];
arrB.unshift(1, 2, 3);
console.log(arrB); // [1, 2, 3, 4, 5, 6]

Практический LeetCode:

4.3 pop() — удалить элемент в конце

Назад к содержанию

pop()Метод удаляет последний элемент из массива и возвращает значение этого элемента. Этот метод изменяет длину массива.

let arr = [1, 2, 3, 4];
for(let i = 0, time = 1; i < arr.length; time++) {
  console.log(`------\n第 ${time} 次遍历:`);
  console.log(arr.pop());
  console.log(arr);
}

/* Console:
------
第 1 次遍历:
4
[ 1, 2, 3 ]
------
第 2 次遍历:
3
[ 1, 2 ]
------
第 3 次遍历:
2
[ 1 ]
------
第 4 次遍历:
1
[]
*/

Практический LeetCode:

4.4 shift() - удалить элемент в начале

Назад к содержанию

shift()Метод удаляет первый элемент из массива и возвращает значение этого элемента. Этот метод изменяет длину массива.

let str = [1, 2, 3];
console.log(str.shift()); // 1
console.log(str.shift()); // 2
console.log(str.shift()); // 3
console.log(str.shift()); // undefined

Практический LeetCode:

4.5 splice() — добавление, удаление и изменение элементов

Назад к содержанию

splice()Метод изменяет массив, удаляя или заменяя существующие элементы или добавляя новые элементы на место, и возвращает измененное содержимое в виде массива. Этот метод изменяет исходный массив.

var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');

console.log(months);
// ['Jan', 'Feb', 'March', 'April', 'June']

months.splice(4, 1, 'May');

console.log(months);
// ['Jan', 'Feb', 'March', 'April', 'May']

Практический LeetCode:

4.6 concat() — выравнивание двух массивов

Назад к содержанию

concat()метод используется для объединения двух или более массивов. Этот метод не изменяет существующий массив, а возвращает новый массив.

const newArr = [1, 2, 3].concat(['a', 'b', 'c']);

// [1, 2, 3, 'a', 'b', 'c']

Практический LeetCode:

4.7 filter() — фильтрация элементов массива

Назад к содержанию

filter()метод создает новый массив, содержащий все элементы теста, реализованного предоставленной функцией.

function isBigEnough(element) {
  return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// [12, 130, 44]

Практический LeetCode:

4.8 forEach() — Обход исходного массива

Назад к содержанию

forEach()Метод выполняет предоставленную функцию один раз для каждого элемента массива.

const items = ['item1', 'item2', 'item3'];
const copy = [];

// 使用 for 遍历
for (let i = 0; i < items.length; i++) {
  copy.push(items[i]);
}

// 使用 forEach 遍历
items.forEach(function(item){
  copy.push(item);
});

Практический LeetCode:

4.9 join() — преобразование массива в строку

Назад к содержанию

join()Метод объединяет все элементы массива (или объекта, подобного массиву) в строку и возвращает строку.

var a = ['Wind', 'Rain', 'Fire'];
var myVar1 = a.join();      // myVar1 的值变为 "Wind,Rain,Fire"
var myVar2 = a.join(', ');  // myVar2的值变为"Wind, Rain, Fire"
var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire"
var myVar4 = a.join('');    // myVar4的值变为"WindRainFire"

Практический LeetCode:

4.10 indexOf() — найти первым по порядку

Назад к содержанию

indexOf()Метод возвращает индекс первого вхождения указанного значения в вызывающем объекте String.

'I am jsliang'.indexOf('a', 4); // 9
[1, 3, 1, 4].indexOf(1, 1); // 2
'怪盗 jsliang'.indexOf('我'); // -1

Практический LeetCode:

4.11 lastIndexOf() — найти первый индекс в обратном порядке

Назад к содержанию

lastIndexOf()Метод возвращает индекс последнего указанного элемента (то есть допустимого значения или переменной JavaScript) в массиве или -1, если он не существует.

var array = [2, 5, 9, 2];
var index = array.lastIndexOf(2); // 3

Практический LeetCode:

Темы пока нет

4.12 map() — Обход возвращает новый массив

Назад к содержанию

map()Метод создает новый массив, результат которого является результатом вызова предоставленной функции для каждого элемента в массиве.

[1, 2, 3, 4].map(item => item * 2) // [2, 4, 6, 8]

[{
  name: 'jsliang',
  age: 24,
}, {
  name: '梁峻荣',
  age: 124
}].map((item, index) => {
  return `${index} - ${item.name}`;
}) // ['0 - jsliang', '1 - 梁峻荣']

Практический LeetCode:

4.13 reverse() — перевернуть элементы массива

Назад к содержанию

reverse()Метод меняет положение элементов в массиве на противоположное и возвращает массив. Этот метод изменяет исходный массив.

let arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1]

Практический LeetCode:

4.14 slice() — найти элемент в указанной позиции

Назад к содержанию

slice()Метод извлекает часть строки и возвращает новую строку.

const str = 'jsliang';
str.slice(0, 2); // 'js'
str.slice(2); // 'liang'

Практический LeetCode:

4.15 sort() — сортировка массива

Назад к содержанию

sort()Сортирует элементы массива и возвращает массив.

[4, 2, 5, 1, 3].sort(), // [1, 2, 3, 4, 5]
[4, 2, 5, 1, 3].sort((a, b) => a < b), // [5, 4, 3, 2, 1]
['a', 'd', 'c', 'b'].sort(), // ['a', 'b', 'c', 'd']
['jsliang', 'eat', 'apple'].sort(), // ['apple', 'eat', 'jsliang']

Практический LeetCode:

4.16 toString() — преобразование массива в строку

Назад к содержанию

toString()Возвращает строку, представляющую указанный массив и его элементы.

let arr = [1, 2, 3];
arr.toString(); // '1,2,3'

Практический LeetCode:

4.17 include() — Массив содержит элемент

Назад к содержанию

includes()Метод используется для определения того, содержит ли массив заданное значение, в зависимости от ситуации возвращает true, если есть, иначе возвращает false.

[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false
[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true

Практический LeetCode:

4.18 fill() — заполнение массива

Назад к содержанию

fill()Метод заполняет все элементы массива от начального до конечного индекса фиксированным значением. Индекс завершения не включен.

let arr = [1, 2, 3, 4, 5];
arr = new Array(arr.length).fill(0);
// arr - [0, 0, 0, 0, 0];

Практический LeetCode:

4.19 reduce() — накопление массива

Назад к содержанию

reduce()Метод выполняет функцию редуктора (выполняется в порядке возрастания), предоставленную вами для каждого элемента в массиве, объединяя ее результаты в одно возвращаемое значение.

[1, 2, 3, 4].reduce((prev, next) => {
  return prev + next;
}); // 10
['前端', 'pang', 'liang'].reduce((prev, next, index) => {
  return (index = 0 ? '-js' : '') + prev + 'js' + next;
}); // 前端-jspang-jsliang

Практический LeetCode:

4.20 find() — найти элемент массива

Назад к содержанию

find()Метод возвращает значение первого элемента массива, удовлетворяющего предоставленной тестовой функции. В противном случае вернуть неопределенное значение.

var inventory = [
  {name: 'apples', quantity: 2},
  {name: 'bananas', quantity: 0},
  {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
  return fruit.name === 'cherries';
}

inventory.find(findCherries));
// { name: 'cherries', quantity: 5 }

Практический LeetCode:

Нет реального боя

4.21 findIndex() — поиск индекса элемента

Назад к содержанию

findIndex()Метод возвращает индекс первого элемента в массиве, который удовлетворяет предоставленной тестовой функции. В противном случае вернуть -1.

var array1 = [5, 12, 8, 130, 44];

function isLargeNumber(element) {
  return element > 13;
}

array1.findIndex(isLargeNumber); // 3

Практический LeetCode:

Нет реального боя

5 Резюме

Назад к содержанию

После предыдущей серии подбрасываний мы в основном имеем представление о различных операциях с массивом, хотя и не можем об этом говорить.опытный, но поддержка повседневной работы больше не является проблемой.

напишите здесь,jsliangЗапрос количества слов: 36800.

Да, это долгий путь.Даже когда я впервые написал эту статью, я не ожидал, что в ней будет так много контента для написания, и в ней все еще не было добавлено каких-то новых функций массивов ES6 и ES7.

Массивы — самая простая структура данных в памяти и наиболее часто используемая структура данных в работе.

если ты чувствуешьjsliangЭто очень хорошо написано, добро пожаловать, ставьте лайки, оставляйте сообщения, добавляйте друзей в WeChat, обратите внимание на общедоступную учетную запись WeChat и т. д.

Давайте продолжим изучение прочной основы программирования и узнаем больше о структурах данных и алгоритмах!

Все контактные данные находятся по адресу:библиотека документации jsliang


Какая разница между передком без заброса и соленой рыбой!

jsliangРешение LeetCode будет обновляться каждый день, чтобы помочь друзьям закрепить основы нативного JS, понять и изучить алгоритмы и структуры данных.

Отсканируйте QR-код выше и следуйтеjsliang, бросим вместе!

知识共享许可协议
библиотека документации jsliangЗависит отЛян ЦзюньронгиспользоватьCreative Commons Attribution-NonCommercial-ShareAlike 4.0 Международная лицензияЛицензия.
на основеGitHub.com/l ian Jun Ron…Создание работ выше.
Права на использование, отличные от разрешенных в настоящем Лицензионном соглашении, могут быть получены отCreative Commons.org/licenses/не…получено в.