无法将特定密钥推送到数组

时间:2016-10-04 20:07:10

标签: javascript arrays

所以我刚学会了如何为for循环创建一个函数。 这就是我们所拥有的:

function each(array, func) {
    for (var i = 0; i <array.length; i++) {
        func(array[i]);
    }
}

现在我正在尝试使用已经制作的函数来使用for循环,并将其替换为每个。

   var people = [
  {name: {first: "Alyssa", middle: "P.", last: "Hacker"}, age: 26},
  {name: {first: "Ben", last: "Bitdiddle"}, age: 34}
];

function ages1(people) {
  var acc = [];
  for (var i = 0; i < people.length; i++) {
    acc.push(people[i].age);
  }
  return acc;
}

此函数返回[26,34]

所以现在我创造了这个:

function ages(people) {
    var acc = [];
    each(people, function(age) {
        acc.push(people[i].age);
    });
    return acc;
}

我收到“我未定义”错误。如果我不能使用i来引用每个数字,我还能如何将每个年龄推入新数组?

1 个答案:

答案 0 :(得分:1)

你应该这样做:

function ages(people) {
    var acc = [];
    each(people, function(person) {
        acc.push(person.age);
    });
    return acc;
}

顺便说一句,javascript有一个原生的forEach函数可以执行each函数的功能,并且可能更快/更强大。

它位于Array的原型中,所以它在数组上使用如下:

people.forEach(function(person) {
    acc.push(person.age);
})