从对象数组创建值数组

时间:2012-02-14 14:57:52

标签: javascript jquery

是否有任何工具可供创建:

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

从:

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

6 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:4)

该工具称为for循环。非jQuery解决方案。

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

答案 2 :(得分:2)

如果您不介意使用Underscore.js(包含更多实用程序功能),pluck功能就是您所需要的。

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

答案 3 :(得分:1)

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

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

使用for(...)如上面的几个答案中所示可以正常工作,但是您也冒着添加不想要这种方式的成员的风险,或者在尝试获取名称时遇到一些错误来自没有该财产的会员的财产。请参阅:Why is using "for...in" with array iteration a bad idea?

答案 4 :(得分:0)

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

for (var i in input) output[output.length]=i.name;

答案 5 :(得分:0)

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

以上工作不需要任何库,即使有人使用对象原型进行操作仍然可以正常工作