Рубрики
Без рубрики

Руководство по приводу к применению для существенных методов массива JavaScript

При работе с массивами его можно легко изобретать колесо. После того, как вы знаете, как повторять … Tagged с JavaScript, начинающими, учебниками, WebDev.

При работе с массивами его можно легко изобретать колесо.

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

Ну, почему ты не должен? В конце концов, это универсальная, легко понятая концепция.

Важность логических сокращений

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

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

Вы можете написать петлю, которая фильтрует массив, но когда я вижу Array.filter. Я немедленно знаю, что вы пытаетесь сделать.

Как работает этот гид?

Я прошел методы экземпляра массивов JavaScript и организовал их по категориям, оставив те, которые я считаю, что он считает менее распространенным.

Я оставил свой любимый метод массива? Дай мне знать в комментариях!

Образец данных

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

// Some Hosts of Great British Bake Off
const hosts = [
    { id: 1, name: 'Paul Hollywood', isBaker: true },
    { id: 2, name: 'Prue Leith', isBaker: true },
    { id: 3, name: 'Noel Fielding', isBaker: false },
    { id: 4, name: 'Matt Lucas', isBaker: false },
];

// Some Winners of Great British Bake Off
const winners = [
    'Edd Kimber',
    'Joanne Wheatley',
    'John Whaite',
    'Frances Quinn',
];

Тестирование или поиск существующих элементов

Найти первый элемент, который удовлетворяет условию

Array.prototype.find ()

Найти Принимает функцию и возвращает первый элемент, для которого функция возвращает правдоподобное значение.

const paul = hosts.find(host => host.name === 'Paul Hollywood');
// { id: 1, name: 'Paul Hollywood', isBaker: true }

const firstNonBaker = hosts.find(host => !host.isBaker);
// { id: 3, name: 'Noel Fielding', isBaker: false }

Найдите индекс первого элемента, который удовлетворяет условию

Array.prototypee.findindex ()

Этот метод работает так же, как Найти Кроме того, за исключением того, что он возвращает индекс элемента вместо самого элементов.

const paulIndex = hosts.findIndex(host => host.name === 'Paul Hollywood');
// 0

Найти индекс элемента

Array.prototyee.indexof ()

Индекс немного отличается от Findindex При этом он принимает точное значение в качестве его параметра, а не функции. Из-за этого это более полезно для примитивных значений, поскольку объекты сравниваются со ссылкой.

Если элемент возникает более одного раза в массиве, возвращается индекс первого вхождения.

Если элемент не находится в массиве, то -1 возвращается.

const indexOfJohn = winners.indexOf('John Whaite');
// 2

const indexOfMe = winners.indexOf('Adam Davis');
// -1
// This methods compares objects by reference rather than by value, so it's 
// more useful with primitive types than with objects.
const originalPaul = hosts[0];
const paulClone = { id: 1, name: 'Paul Hollywood', isBaker: true };

const indexOfOriginalPaul = hosts.indexOf(originalPaul);
// 0

const indexOfPaulClone = hosts.indexOf(paulClone);
// -1

Найти последний показатель элемента

Array.prototype.lastindexof ()

Это так же, как Индекс За исключением того, что он возвращает индекс последнего возникновения элемента, кроме первого возникновения элемента.

Найти каждый элемент, который удовлетворяет условию

Array.prototype.filter ()

const bakers = hosts.filter(host => host.isBaker);
// [ { id: 1, name: 'Paul Hollywood', isBaker: true }, { id: 2, name: 'Prue Leith', isBaker: true } ]

Проверьте, удовлетворяет ли каждый элемент условию

Array.prototypee.every ()

const isAllBakers = hosts.every(host => host.isBaker);
// false

Проверьте, будет ли хотя бы один элемент удовлетворять условию

Array.Prototype .some ()

const hasAtLeastOneBaker = hosts.some(host => host.isBaker);
// true

const hasAtLeastOneIdGreaterThanTen = hosts.some(host => host.id > 10);
// false

Проверьте, включен ли элемент в массиве

Array.prototype.includes ()

// This methods compares objects by reference rather than by value, so it's 
// more useful with primitive types than with objects.
const originalPaul = hosts[0];
const paulClone = { id: 1, name: 'Paul Hollywood', isBaker: true };

const containsOriginalPaul = hosts.includes(originalPaul);
// true

const containsPaulClone = hosts.includes(paulClone);
// false

Манипулирующие массивы

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

Добавьте элемент в конец массива

Array.prototype.push ()

hosts.length;
// 4

hosts.push({id: 5, name: 'Sue Perkins'});

hosts.length;
// 5

// This method accepts an arbitrary number of arguments, meaning you can add as
// many elements as you want with a single call

winners.length;
// 4

winners.push('Nancy Birtwistle', 'Nadiya Hussain', 'Candice Brown');

winners.length;
// 7

Array.Prototype .Concat ()

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

winners.length;
// 4

const moreWinners = winners.concat('Nancy Birtwistle', 'Nadiya Hussain', 'Candice Brown');

winners.length;
// 4

moreWinners.length;
// 7

Удалите последний элемент из массива

Array.prototype.pop ()

Этот метод является обратным толчок Удаление последнего элемента из массива. Используя эти две функции, вы можете лечить массив, как стек Отказ

hosts.length;
// 4

const lastElement = hosts.pop();
// { id: 4, name: 'Matt Lucas', isBaker: false }

hosts.length;
// 3

Объедините две массивы

Array.Prototype .Concat ()

winners.length;
// 4

otherWinners = ['Sophie Faldo', 'Rahul Mandal'];

combinedWinners = winners.concat(otherWinners);

Установите все (или просто некоторые) элементы в одно и то же значение

Array.prototype.fill ()

winners.fill('everyone');
// [ 'everyone', 'everyone', 'everyone', 'everyone' ]

winners.fill('you', 0, 2);
// [ 'you', 'you', 'everyone', 'everyone' ]

Сортировать массив

Array.prototype.sort ()

winners.sort();
// [ 'Edd Kimber', 'Frances Quinn', 'Joanne Wheatley', 'John Whaite' ]

Обратный порядок массива

Array.Prototype.Reverse ()

winners;
// [ 'Edd Kimber', 'Joanne Wheatley', 'John Whaite', 'Frances Quinn' ]

winners.reverse();
// [ 'Frances Quinn', 'John Whaite', 'Joanne Wheatley', 'Edd Kimber' ]

Уменьшите глубину массива (не просто массивы массивов)

Array.prototype.flat ()

let bothArrays = [hosts, winners];
// [
//   [
//     { id: 1, name: 'Paul Hollywood', isBaker: true },
//     { id: 2, name: 'Prue Leith', isBaker: true },
//     { id: 3, name: 'Noel Fielding', isBaker: false },
//     { id: 4, name: 'Matt Lucas', isBaker: false }
//   ],
//   [ 'Edd Kimber', 'Joanne Wheatley', 'John Whaite', 'Frances Quinn' ]
// ]

bothArrays.flat();
// [
//   { id: 1, name: 'Paul Hollywood', isBaker: true },
//   { id: 2, name: 'Prue Leith', isBaker: true },
//   { id: 3, name: 'Noel Fielding', isBaker: false },
//   { id: 4, name: 'Matt Lucas', isBaker: false },
//   'Edd Kimber',
//   'Joanne Wheatley',
//   'John Whaite',
//   'Frances Quinn'
// ]

Итализация или выполнение функций на элементах массива

Получить результаты передачи каждого элемента в функцию

Array.prototype.map ()

const hostNames = hosts.map(host => host.name);
// [ 'Paul Hollywood', 'Prue Leith', 'Noel Fielding', 'Matt Lucas' ]

Array.prototype.flatmap ()

FlatMap Работает так же, как карта , но сплющивает массив потом.

const hostNamesSeparated = hosts.flatMap(host => host.split(' '));
// [
//   'Paul', 'Hollywood',
//   'Prue', 'Leith',
//   'Noel', 'Fielding',
//   'Matt', 'Lucas'
// ]

Итерация на каждый элемент

Array.prototype.foreach ()

hosts.forEach(host => console.log(host.name));
// Paul Hollywood
// Prue Leith
// Noel Fielding
// Matt Lucas

Уменьшить массив в одно значение

Array.prototype.reduce ()

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

// The for loop you might want to replace
let numberOfBakers = 0;
for (let i = 0; i < hosts.length; i++) {
    numberOfBakers = numberOfBakers + ~~hosts[i].isBaker;
    // ~~ is used to convert values to numbers without allowing for NaN
}
let numberOfBakers = hosts.reduce((accumulator, host) => accumulator + ~~host.isBaker, 0);
// 2

Создание строковых представлений

Array.prototype.join ()

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

winners.join(', ');
// 'Edd Kimber, Joanne Wheatley, John Whaite, Frances Quinn'

Array.prototypee.tostring ()

winners.toString();
// 'Edd Kimber,Joanne Wheatley,John Whaite,Frances Quinn'

Больше содержания

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

Оригинал: “https://dev.to/brewinstallbuzzwords/the-use-case-driven-guide-to-essential-javascript-array-methods-1b7j”