Предисловие
Я полагал, что большинство младших разработчиков внешнего интерфейса должны были пройти через трудный момент при работе с массивом в начале. Иногда вы будете ломать голову целый день и так и не сможете понять, в чем проблема. С технической точки зрения, все эти проблемы, которые вызывают у вас головную боль, не будут проблемой, если мы решим их правильно и правильно.
В этой статье мы сосредоточимся в основном на обработке массивов различными методами. Поэтому мы не будем подробно объяснять лежащие в его основе принципы. Для тех, кто хочет больше узнать о принципах каждой функции, упомянутой ниже, я предлагаю вам воспользоваться Google или просмотреть официальные документы для получения дополнительной информации.
Чтобы лучше понять массив, мы можем представить, что массив — это ряд книг на полке. Каждая книга является элементом внутри полки. Между тем, мы можем добавлять, удалять и перемещать каждый элемент в массиве, полагаясь на различные эффективные и лаконичные методы.
Чтобы определить, является ли массив
Вот синтаксис в ES5:
Array.isArray()
Это самый надежный способ определить, является ли объект или тип данных массивом. В большинстве случаев он имеет наименьшую вероятность возникновения ошибок и способен обеспечить точное суждение даже при прохождении через iframe.
Array.isArray([]); // true Array.isArray([1, 2, 3]); // true Array.isArray(null); // false Array.isArray({}); // false // Usage Example: const isArray = Array.isArray(['book1', 'book2', 'book3']); console.log(isArray); // Return true if it's an array, else it will return false
Чтобы определить пустой массив
Я бы рекомендовал использовать isEmpty()
из Lodash для точного определения пустого массива. Будет стабильнее и безопаснее использовать популярную стороннюю библиотеку, управляемую командой профессионалов. Кроме того, будет намного эффективнее позволить пакету обрабатывать побочные эффекты, а также уменьшить количество различных потенциальных ошибок в системе.
const fruits = []; const books = ['book1','book2','book3']; console.log(isEmpty(fruits)); // Return true if it's an empty array console.log(isEmpty(books)); // Return false if it's not an empty array
Чтобы добавить элементы в массив
Одним из наиболее распространенных вариантов использования для добавления элемента в массив является использование push()
. push()
изменит исходный массив, добавив элементы в конец массива. Вы фактически изменяете исходный массив всякий раз, когда вставляете в него элемент. Мутация может привести к различным неожиданным результатам и побочным эффектам и даже создать более глубокие ошибки в других местах. Поэтому старайтесь избегать использования push()
concat()
в JavaScript — гораздо лучший вариант при вставке элемента в массив.
const books = ['book1', 'book2', 'book3']; const newBooks = books.concat('book4'); console.log(newBooks); // ["book1", "book2", "book3", "book4"]
Чтобы удалить/фильтровать элементы из массива
Что такое «фильтр»? Вообще говоря, фильтр относится к «фильтрации». Представьте, что вы держите в руках фильтрующую сетку, сетка будет фильтровать по условиям, а остальное — то, что вы хотите.
Настоятельно рекомендуется использовать метод JS filter()
при удалении элемента из массива.
const books = ['book', 'book', 'book1', 'book2']; const newBooks = books.filter(item => item !== 'book'); const similarBooks = books.filter(item => item === 'book'); console.log(newBooks); // ["book1", "book2"] console.log(similarBooks); // ["book", "book"]
Чтобы найти элемент в массиве
Я предлагаю использовать функцию JS find()
. Возвращаемые значения find()
и filter()
различны. find()
вернет только один элемент, а filter()
вернет несколько элементов.
const books = ['book1', 'book2', 'book3']; const book = books.find(item => item === 'book2'); console.log(book); // book2
Обход массива
В настоящее время сообщество JS разрабатывает множество методов обхода массива, один из них использует map()
. map()
имеет самую высокую скорость работы и подходит для использования в большинстве сценариев.
Самая большая разница между map()
и forEach()
заключается в их способе обработки массива и возвращаемых значений. map()
возвращает новый массив того же размера, а forEach()
изменяет исходный массив. Допустим, мы хотим пройтись по массиву чисел, map()
вернет новый массив чисел, а forEach()
вернет значение undefined.
const numbers = [1, 2, 3, 4, 5]; numbers.forEach(num => num * num); // return undefined numbers.map(num => num * num); // [1, 4, 9, 16, 25]
Каким-то образом способ использования любой из вышеперечисленных функций по-прежнему зависит от вашего варианта использования и сценариев.
В приведенном ниже примере показан другой вариант использования map()
:
const books = ['book1', 'book2', 'book3']; // Return each as string books.map(item => console.log(item)); // Result: book1 book2 book3 // Return each as component books.map(item => ( <div>{item}</div> )); // Result: It will return three components
Представленные выше 6 способов работы с массивом подходят для использования в большинстве сценариев. Они широко используются и в моем собственном проекте. Каждый из них имеет более высокую скорость работы и меньшую вероятность ошибки. В большинстве случаев вам понадобится всего одна строка кода, чтобы решить вашу проблему. Это также поможет вам поддерживать более чистый, поддерживаемый и читаемый код.
Спасибо за чтение и удачного кодирования! Здоровья, приятель!