Массив JavaScript для интервью: фильтрация, сопоставление, сокращение и isArray
Встроенная шпаргалка Array
Как разработчик JavaScript, мы часто хотим манипулировать или извлекать различные данные из массива, JavaScript предоставляет различные встроенные функции для облегчения нашей задачи с помощью встроенных функций. Эти функции могут помочь нам улучшить структуру нашего кода и упростить ответы на вопросы интервью, связанные с Array.
Мы рассмотрим следующие функции массива:
- Array.isArray
- карта
- фильтр
- уменьшать
isArray
Мы часто хотим проверить, является ли переменная массивом или нет. Есть несколько способов сделать это, наиболее распространенным способом является использование instanceof.
let a = [1,1,2,42] let b = { "name": "Manan" } console.log(a instanceof Array) //true console.log(b instanceof Array) //false
Давайте сделаем это с помощью массива:
let a = [1,1,2,42] let b = { "name": "Manan" } console.log(Array.isArray(a)) //true console.log(Array.isArray(b)) //false
карта()
Если вы новичок в JavaScript, вы, возможно, до сих пор не использовали функцию карты, но изучение функции карты поможет вам в долгосрочной перспективе.
Предположим, у вас есть массив объектов, каждый объект содержит ключ "id", и теперь вам нужен массив всех идентификаторов.
Одним из решений этого пути является инициализация пустого массива, запуск цикла for и отправка идентификатора каждого объекта в массиве.
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Raj", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let idsArray = [] for(let i = 0; i< employees.length; i++){ idsArray.push(employees[i].id) } console.log(idsArray) //[11,2131,3012]
Используем карту:
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Raj", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let idsArray = employees.map(employee => employee.id) console.log(idsArray) //[11,2131,3012]
фильтр()
Как следует из названия, фильтр — это функция, которая может помочь вам отфильтровать элементы массива, предположим, что есть массив объекта, который содержит «зарплата»теперь вы хотите получить массив сотрудника, чья зарплата больше 40000.
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Gaurav", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let salaryAbove40K = employees.filter(employee => employee.salary > 40000) console.log(salaryAbove40K) //Array will contain objects whose salary is greater than 40000.
уменьшать()
Эта встроенная функция немного сложна, но мы попытаемся понять ее с помощью следующей проблемы.
Предположим, что приведенный выше массив содержит ключ "salary". Теперь попробуйте узнать общую сумму всех зарплат. Одним из общих решений будет инициализация переменной с 0, а затем запуск цикла for для каждого элемента массива, а затем добавление к нему значения.
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Gaurav", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let totalSalary = 0 for(let i = 0; i < employees.length ; i++){ totalSalary = totalSalary + employees[i].salary } console.log(totalSalary) //169000
Давайте сделаем это с уменьшением
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Gaurav", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let totalSalary = employees.reduce((a,employee)=> a + employee.salary, 0) console.log(totalSalary) //169000
Теперь давайте представим, что мы хотим узнать сотрудника, чья зарплата самая высокая.
let employees = [ { "id": 11, "name":"Abhinav", "salary":75000 }, { "id": 2131, "name":"Gaurav", "salary":62000 }, { "id": 3012, "name":"Raj", "salary":32000 }] let employeeWithHighest = employees.reduce((a,employee)=> (a.salary || 0 ) > employee.salary ? a : employee, {} ) console.log(employeeWithHighest) //Answer will the object of Abhinav
Теперь давайте попробуем понять, что первый аргумент для сокращения — это функция обратного вызова, которая принимает 2 параметра — "a" и "employee". До сих пор вы могли догадаться, что «сотрудник» — это другой элемент массива, но что такое «a»? Это локальная переменная, которая используется во время обхода массива. Я инициализировал ‘a’ как пустой {}, который является вторым параметром функции сокращения.
Короче говоря, функция редукции инициализирует локальную переменную и перебирает в цикле каждый из элементов, и для каждого элемента она сохраняет свой ответ на эту локальную переменную, и как только все элементы пройдены, возвращается окончательное значение этой локальной переменной.
Вывод
Существует много альтернативных библиотек для встроенных функций, но знание встроенной функции помогает нам лучше понять JavaScript.
Я надеюсь, что вы нашли это полезным. Спасибо за чтение.
Если вы хотите узнать больше о встроенных функциях, вы можете обратиться по ссылке: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array