从对象数组创建值数组

Create array of values from array of objects

本文关键字:数组 创建 对象      更新时间:2023-09-26

有什么工具可以创建吗:

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

来自:

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

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

或jQuery的版本:

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

该工具被称为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(",") );

如果您不介意使用Undercore.js(它由更多的实用函数组成),那么pluck函数就是您想要的。

var names = _.pluck(array, "name");
var input=[ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ];
var output=[];
$.each(input, function (index, value){
    output.push(value.name);
});

使用上面几个答案中所示的for(…)可以很好地工作,但您也会冒着以这种方式添加不想要的成员的风险,或者在尝试从没有该属性的成员获取name属性时遇到一些错误。参见:为什么使用";对于在";数组迭代是个坏主意吗?

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

上面的工作不需要任何库,即使有人篡改了对象原型

,它仍然可以正常工作