有没有更好的方法来添加一个对象数组的属性到另一个数组而不是for循环?

问题描述:

我有对象都有一个叫做Id特性,奠定了与此相同的数组:有没有更好的方法来添加一个对象数组的属性到另一个数组而不是for循环?

var allPeople = [ { 'id': someNumber, 'name': someString }, { 'id': anotherNumber, 'name': anotherString }, ... ] 

我想抓住每一个ID的,并且将它们连接起来到另一个阵列,我会打电话给selectedPeople

[ someNumber, AnotherNumber ] 

目前,我使用for循环到每个ID推到selectedPeople数组:

for (i = 0; i < allPeople.length; i++) { 
     selectedPeople.push(allPeople[i].id); 
} 

但是,这感觉相当程序化,我想知道是否有更好的方法来处理这个问题? Javascript是否有一种方法可以实现我想实现的目标?

+0

对于什么是它的价值我想使用for循环来做它 – Ding

+0

你的数据最初来自JSON吗?如果是这样,那么你可以在解析时构建第二个数组,因此你不需要第二个循环。 –

Array#map

var allPeople = [{ 
 
     'id': someNumber, 
 
     'name': someString 
 
    }, { 
 
     'id': anotherNumber, 
 
     'name': anotherString 
 
    }, ...] 
 
    var selectedPeople = allPeople.map(function(person) { 
 
     return person.id 
 
    }); 
 
    console.log(selectedPeople);

+0

我没有意识到这一点。谢谢! – ReactingToAngularVues

可以使用map阵列的方法来变换数组

类似:

var allPeople = [ { 'id': someNumber, 'name': someString }, { 'id': anotherNumber, 'name': anotherString }] 

var ids = allPeople.map(function(person) {return person.id;}); 
//ids is [someNumber, AnotherNumber ] 
+2

“command”在JavaScript中不是一个有意义的术语 - “map”是Array.prototype的函数或方法。 – joews

+0

这是正确的。更新了答案 – Variant