Массив JavaScript для интервью: фильтрация, сопоставление, сокращение и isArray

Встроенная шпаргалка Array

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

Мы рассмотрим следующие функции массива:

  1. Array.isArray
  2. карта
  3. фильтр
  4. уменьшать

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’ как пустой {}, который является вторым параметром функции сокращения.

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

Вывод

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

Я надеюсь, что вы нашли это полезным. Спасибо за чтение.

Если вы хотите узнать больше о встроенных функциях, вы можете обратиться по ссылке: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array