在将特定键推入数组时遇到困难

Having trouble pushing a specific key into an array

本文关键字:数组 遇到      更新时间:2023-09-26

所以我刚刚学会了如何为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是未定义的"错误。如果我不能使用I来引用每个数字,我怎么能把每个年龄推入新的数组呢?

你应该这样做:

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);
})