Как фильтровать javascript вложенные массивы без ключа - PullRequest
0 голосов
/ 05 мая 2020
["Ahmed", 8],
  ["Clement", 10],
  ["Elamin", 6],
  ["Adam", 7],
  ["Tayoa", 11],
  ["Nina", 10],
  ["Bob", 9],
  ["Lee", 1]

В приведенном выше массиве, как я могу получить значение имен, значение второго ключа которого больше 8? любая помощь appricisted.Спасибо

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

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

const data = [
  ["Ahmed", 8],
  ["Clement", 10],
  ["Elamin", 6],
  ["Adam", 7],
  ["Tayoa", 11],
  ["Nina", 10],
  ["Bob", 9],
  ["Lee", 1]
]

const filtered = data.filter(([_name, num]) => num > 8).map(([name]) => name)

console.log(filtered)
1 голос
/ 05 мая 2020

Вы можете reduce() массив за один проход, проверив, больше ли второй элемент в массиве (возраст?) 8, если да, добавьте первый элемент в массив (имя ) в аккумуляторный массив, например:

let arr = [
  ["Ahmed", 8],
  ["Clement", 10],
  ["Elamin", 6],
  ["Adam", 7],
  ["Tayoa", 11],
  ["Nina", 10],
  ["Bob", 9],
  ["Lee", 1],
];

let result = arr.reduce((acc, [name, age]) => (age > 8 && acc.push(name), acc), []);

console.log(result);
...