Мне нужно перебрать массив и найти людей младше 18 лет. Должен ли я сначала преобразовать его в строку (toString)? - PullRequest
1 голос
/ 01 октября 2019

Мне нужно найти людей в возрасте до 18 лет в массиве, используя циклы. Нужно ли сначала сделать строку?

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

var people = [
  { name : 'Matt', age: 19},
  { name : 'George', age: 16},
  { name : 'Ross', age: 12},
  { name : 'Gerard', age: 18},
  { name : 'Leo', age: 15},
  { name : 'Brad', age: 21}
 ];

Вывод в консоли должен выглядеть следующим образом:

George is 16 
Ross is 12
Leo is 15

Ответы [ 5 ]

2 голосов
/ 01 октября 2019

Использовать фильтр. Нет необходимости делать строки

var people = [
  { name : 'Matt', age: 19},
  { name : 'George', age: 16},
  { name : 'Ross', age: 12},
  { name : 'Gerard', age: 18},
  { name : 'Leo', age: 15},
  { name : 'Brad', age: 21}
 ];
 console.log(people.filter(function(e){return e.age<18}))
0 голосов
/ 01 октября 2019

Использование ES6 javascript:

people.forEach((single) => {
  if(single.age < 18)
   console.log(`${single.name} is ${single.age}`);
});
0 голосов
/ 01 октября 2019

используйте фильтр, чтобы сохранить хорошие и foreach для отображения.

const people = [
  { name : 'Matt', age: 19},
  { name : 'George', age: 16},
  { name : 'Ross', age: 12},
  { name : 'Gerard', age: 18},
  { name : 'Leo', age: 15},
  { name : 'Brad', age: 21}
 ];
people.filter(v => v.age < 18).forEach((v)=>{console.log(`${v.name} is ${v.age}`)})
0 голосов
/ 01 октября 2019

сначала filter, затем map

var people = [
  { name : 'Matt', age: 19},
  { name : 'George', age: 16},
  { name : 'Ross', age: 12},
  { name : 'Gerard', age: 18},
  { name : 'Leo', age: 15},
  { name : 'Brad', age: 21}
 ];
 
console.log(people.filter(function(e){return e.age<=18}).map(x => x.name+" is " +x.age));
0 голосов
/ 01 октября 2019

Я думаю, вы можете использовать метод фильтра ES6s для архивирования. Но вам нужно заполнить JS для этого.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

        var people = [
      { name : 'Matt', age: 19},
      { name : 'George', age: 16},
      { name : 'Ross', age: 12},
      { name : 'Gerard', age: 18},
      { name : 'Leo', age: 15},
      { name : 'Brad', age: 21}
     ];
function isJung(p){
return p.age <18 ;
}
var youngPeople = people.filter(isJung);

И полифил также предоставляется Mozilla:

if (!Array.prototype.filter){
  Array.prototype.filter = function(func, thisArg) {
    'use strict';
    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
        throw new TypeError();

    var len = this.length >>> 0,
        res = new Array(len), // preallocate array
        t = this, c = 0, i = -1;

    var kValue;
    if (thisArg === undefined){
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          kValue = t[i]; // in case t is changed in callback
          if (func(t[i], i, t)){
            res[c++] = kValue;
          }
        }
      }
    }
    else{
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          kValue = t[i];
          if (func.call(thisArg, t[i], i, t)){
            res[c++] = kValue;
          }
        }
      }
    }

    res.length = c; // shrink down array to proper size
    return res;
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...