创建从对象
问题描述:
的数组值的数组有没有什么工具来创建:创建从对象
[ 'John', 'Sam', 'Marry' ]
来自:
[ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ]
?
答
呀,map()
method:
var array = [{name: 'John'}, {name: 'Sam'}, {name: 'Mary'}].map(function (val) {
return val.name;
});
var array = jQuery.map([{name: 'John'}, {name: 'Sam'}, {name: 'Mary'}], function (val) {
return val.name;
});
答
的工具被称为一个循环。非jQuery解决方案。
var myArray = [];
var myObj = [ { name: 'John' }, { name: 'Sam' }, { name: 'Marry' } ];
for(var x in myObj) {
myArray.push(myObj[x].name);
}
alert(myArray.join(","));
答
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);
}
上述工作,而无需任何库,并且仍然正常工作,即使有人搞乱与如在所示对象的原型
答
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?
答
如果您不介意使用Underscore.js(包含更多实用程序函数),则可以使用pluck
函数。
var names = _.pluck(array, "name");
'jQuery.map'作为助手不需要'.get()'调用。 +1 – jAndy 2012-02-14 15:02:02
@jAndy:只是测试你身边......;) – Matt 2012-02-14 15:03:02