Как вернуть конкретные значения из массива с объектами внутри нового массива, который должен пройти тест? - PullRequest
0 голосов
/ 25 декабря 2018

Здравствуйте, я пытаюсь найти решение, но не могу найти правильный ответ в своих исследованиях и надеюсь, что кто-нибудь может помочь мне с моей проблемой.Задача требовала, чтобы я написал функцию, которая возвращает имя каждого человека старше 16 лет в новом массиве.Цель состоит в том, чтобы написать функцию, которая возвращает в моем примере: ['Jane', 'Jack']


function onlyAdult(obj) {

}


const examplePeopleArray = [
  { name: 'John', age: 15 },
  { name: 'Jane', age: 16 },
  { name: 'Jack', age: 17 }
];

console.log (onlyAdult (examplePeopleArray));


Я пытался управлять задачей с помощью цикла for, который циклически проходил по массиву, и подключил оператор if, но таким образом это не сработало.После этого я попытался найти подходящие методы для своей задачи с помощью каждых (), filter (), forEach (), map (), some (), но ни один из них на самом деле не работал для моей задачи.

function onlyAdult(obj) {
for (i = 0; i < obj.length; i++) {
  if (obj[0].age >= 16) {
    return obj[0].age;
  } else if (obj[1].age >= 16) {
    return obj[1].age;
  } else if (obj[2].age >= 16) {
    return obj[2].age;
  }
}
}

Я знаю, что мой код неверен, а также то, как я пытался его решить, я был бы очень признателен, если бы кто-то мог мне помочь.

Ответы [ 2 ]

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

const examplePeopleArray = [
  { name: 'John', age: 15 },
  { name: 'Jane', age: 16 },
  { name: 'Jack', age: 17 }
];

const result = examplePeopleArray.reduce((arr, el) => { 
  if (el.age >= 16) arr.push(el.name)
  return arr 
}, [])

Для этой задачи будет достаточно reduce.Здесь мы уменьшаем входной массив до массива значений отфильтрованных строк на основе сравнения возраста.Если возраст меньше 16 лет, мы просто ничего не нажимаем и переходим к следующему элементу.

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

Вы можете сначала отфильтровать массив, используя .filter(), а затем .map(), чтобы получить только нужные значения свойств.

const data = [
  { name: 'John', age: 15 },
  { name: 'Jane', age: 16 },
  { name: 'Jack', age: 17 }
];

const result = data.filter(({ age }) => age >= 16).map(({ name }) => name);
                   
console.log(result);

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...