2012-02-14 152 views
4

的数组值的数组有没有什么工具来创建:创建从对象

[ 'John', 'Sam', 'Marry' ] 

来自:

[ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ] 

回答

11

呀,map() method

var array = [{name: 'John'}, {name: 'Sam'}, {name: 'Mary'}].map(function (val) { 
    return val.name; 
}); 

jQuery's version

var array = jQuery.map([{name: 'John'}, {name: 'Sam'}, {name: 'Mary'}], function (val) { 
    return val.name; 
}); 
+0

'jQuery.map'作为助手不需要'.get()'调用。 +1 – jAndy 2012-02-14 15:02:02

+0

@jAndy:只是测试你身边......;) – Matt 2012-02-14 15:03:02

4

的工具被称为一个循环。非jQuery解决方案。

var myArray = []; 
var myObj = [ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ]; 
for(var x in myObj) { 
    myArray.push(myObj[x].name); 
} 
alert(myArray.join(",")); 
0
var input=[ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ]; 
var output=[]; 

for (var i in input) output[output.length]=i.name; 
0
var newArr = []; 
for (var i = 0, max = arr.length; i < max ; i++) { 
    newArr.push(arr[i].name); 
} 

上述工作,而无需任何库,并且仍然正常工作,即使有人搞乱与如在所示对象的原型

1
var input=[ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ]; 
var output=[]; 

$.each(input, function (index, value){ 
    output.push(value.name); 
}); 

使用的(...)上述两个答案都可以正常工作,但是你也冒着添加你不想这样的成员的风险,或者试图从没有该属性的成员中获取名称属性时遇到一些错误。请参阅:Why is using "for...in" with array iteration a bad idea?

2

如果您不介意使用Underscore.js(包含更多实用程序函数),则可以使用pluck函数。

var names = _.pluck(array, "name");