简体   繁体   English

从对象数组创建值数组

[英]Create array of values from array of objects

Is there any tool to to create: 是否有任何工具可以创建:

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

from: 从:

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

?

Yeah, the map() method : 是的, map()方法

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

or jQuery's version : jQuery的版本

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

The tool is called a for loop. 该工具称为for循环。 A non jQuery solution. 非jQuery解决方案。

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

如果你不介意使用Underscore.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);
});

Using for(...) as shown in a couple of the above answers works fine, but you also run the risk of adding members you don't want this way, or running into some errors when trying to grab the name property from a member that doesn't have that property. 使用for(...)如上面的几个答案所示可以正常工作,但是你也冒着添加你不想要这种方式的成员的风险,或者在尝试从中获取name属性时遇到一些错误没有该属性的成员。 See: Why is using "for...in" with array iteration a bad idea? 请参阅: 为什么在数组迭代中使用“for ... in”是一个坏主意?

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

The above works without needing any libraries, and still works properly even if someone mucked with object prototypes 上面的工作不需要任何库,即使有人用对象原型进行了破坏,仍能正常工作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM