Вставить все значения ключа из массива в новый массив, при условии, что значения другого ключа (в том же объекте) удовлетворяют определенному условию - PullRequest
0 голосов
/ 04 декабря 2018

Лучший способ описать решение, которое я ищу, - это элегантный способ сделать функцию для этого:

function getNamesOfLegalDrivers(people) {



}

const examplePeopleArray = [
{ name: 'John', age: 14 },
{ name: 'Joey', age: 16 },
{ name: 'Jane', age: 18 }
];

console.log(getNamesOfLegalDrivers(examplePeopleArray), '<-- should print all names over 16, and thus be ["Joey", "Jane"]');

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018
function getNamesOfLegalDrivers(people) {
  return people
    .filter(person=>person.age >= 16) //returns array of all person objects over 16
    .map(person=>person.name)//returns name of all people in the filtered array

}
0 голосов
/ 04 декабря 2018

Вы можете сделать что-то вроде этого:

function getNamesOfLegalDrivers(people) 
{
    var legalDrivers = [];

    for (var i in people) {
        if(people[i].age >= 16){
           legalDrivers.push(people[i].name);
        }
    }

    return legalDrivers;
}

const examplePeopleArray = [
{ name: 'John', age: 14 },
{ name: 'Joey', age: 16 },
{ name: 'Jane', age: 18 }
];

console.log(getNamesOfLegalDrivers(examplePeopleArray));
0 голосов
/ 04 декабря 2018

Вы ищете функции на прототипе Array, например filter и map.

Javascript

function getNamesOfLegalDrivers(people) {
  return people
    .filter(function(person) { return person.age >= 16; })
    .map(function(person) { return person.name; });
}

Документацияиз MDN

  • Array.prototype.filter Метод filter() создает новый массив со всеми элементами, которые проходят тест, реализованный предоставленной функцией.
  • Array.prototype.map Метод map() создает новый массив с результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...