Create by jsliang on 2019-07-31 11:22:27
Recently revised in 2019-08-15 16:00:00
Массивы — простейшая структура данных в памяти.
каталог
Чем отличается передок без закидывания от соленой рыбы?
2 Предисловие
Если вам случится увидеть эту статью, вы хотели бы знатьАлгоритмы и структуры данныхпримерномножествознание.
Итак, я надеюсь, что у друзей, увидевших эту статью, есть:
- Базовые знания JavaScript.
- Немного о массивах и их использовании.
В то же время, я надеюсь, что друзья, прочитавшие эту статью, усвоили:
- Базовые знания массивов.
- Добавление массива, удаление, модификация и проверка
- Общие сведения о массивах
но,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, ...)
.
-
start
это начальная координата массива -
deleteCount
Для того, чтобы нужно было удалить число из начальной координаты, оно может быть 0, что означает не удалять -
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:
- 000 - головоломка-группировка
- 020 - Действительные скобки
- 067 - Двоичное суммирование (add-binary)
- 088 - Объединить два отсортированных массива (merge-sorted-array)
- 118 - Треугольник Паскаля
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:
- 066 - плюс один
- 067 - Двоичное суммирование (add-binary)
- 189 - повернуть-массив
- 202 - счастливое число
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:
- 007 - Integer Reverse (обратно-целое число)
- 020 - Допустимые скобки
- 189 - повернуть-массив
- 202 - счастливое число
- 225 - Реализовать стеки с очередями (implement-stack-using-queues)
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:
- 014 - самый длинный общий префикс (longest-common-prefix)
- 171 — номер столбца листа Excel (номер-столбца-листа-excel)
- 225 - Реализовать стеки с очередями (implement-stack-using-queues)
- 232 - Реализовать очереди со стеками (реализовать очередь с использованием стеков)
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:
- 026 - Удалить дубликаты в отсортированном массиве (remove-duplicates-from-sorted-array)
- 027 - удалить элемент (remove-element)
- 088 - Объединить два отсортированных массива (merge-sorted-array)
- 136 - Число, которое встречается только один раз (однозначное)
- 189 - повернуть-массив
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:
- 073 - набор нулей матрицы
- 350-- два массива пересечения II (пересечение-двух-массивов-ii)
- 383 - записка о выкупе (записка о выкупе)
- 434 - Количество слов в строке (количество сегментов в строке)
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:
- 000 - головоломка-группировка
- 067 - Двоичное суммирование (add-binary)
- 125 - действительный палиндром
- 190 - Обратный бит
- 242 - Действительные анаграммы
4.10 indexOf() — найти первым по порядку
indexOf()
Метод возвращает индекс первого вхождения указанного значения в вызывающем объекте String.
'I am jsliang'.indexOf('a', 4); // 9
[1, 3, 1, 4].indexOf(1, 1); // 2
'怪盗 jsliang'.indexOf('我'); // -1
Практический LeetCode:
- 001 - две суммы
- 027 - удалить элемент (remove-element)
- 028 - реализовать strStr (реализовать-strstr)
- 205 - изоморфные строки
- 217 — содержит повторяющиеся элементы (содержит-дубликаты)
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:
- 001 - две суммы
- 205 - изоморфные строки
- 412 - FizzBuzz (шипение)
- 434 - Количество слов в строке (количество сегментов в строке)
4.13 reverse() — перевернуть элементы массива
reverse()
Метод меняет положение элементов в массиве на противоположное и возвращает массив. Этот метод изменяет исходный массив.
let arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [3, 2, 1]
Практический LeetCode:
- 067 - Двоичное суммирование (add-binary)
- 125 - действительный палиндром
- 171 — номер столбца листа Excel (номер-столбца-листа-excel)
- 190 - Обратный бит
- 344 - обратная строка
4.14 slice() — найти элемент в указанной позиции
slice()
Метод извлекает часть строки и возвращает новую строку.
const str = 'jsliang';
str.slice(0, 2); // 'js'
str.slice(2); // 'liang'
Практический LeetCode:
- 005 - самая длинная палиндромная подстрока
- 014 - самый длинный общий префикс (longest-common-prefix)
- 088 - Объединить два отсортированных массива (merge-sorted-array)
- 459 - Повторяющаяся строка (повторяющаяся-подстрока-шаблон)
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:
- 268 - пропущенное число
- 389 - найди отличия
- 414 - третье максимальное число
- 448 - Найти исчезнувшие числа во всех массивах (найти все числа, исчезнувшие в массиве)
- 455 - Назначить куки (assign-cookies)
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:
- 014 - самый длинный общий префикс (longest-common-prefix)
- 202 - счастливое число
- 258 - добавить цифры
- 268 - пропущенное число
- 049 - Группа-анаграммы
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/не…получено в.