我有一个javascript对象数组:
array = [ {x:'x1', y:'y1'}, {x:'x2', y:'y2'}, ... {x:'xn', y:'yn'} ]
我想创建一个仅包含x
值的新数组:
[ 'x1', 'x2', ..., 'xn' ]
我可以在for
循环中轻松完成此操作......:
var newarray = [];
for (var i = 0; i < array.length; i++){
newarray.push(array[i].x);
}
...但我想知道是否有一个很好的单行方式使用jquery甚至常规javascript来做到这一点?
答案 0 :(得分:11)
您可以使用map执行此操作:
var newarray = jQuery.map(array, function (item) { return item.x; });
答案 1 :(得分:3)
ECMAScript 5采用原生map()
方法:
var newArray = array.map(function(value) { return value.x; });
在FF中,这甚至应该比循环更快,但对于所有浏览器都不是这样(Opera);其他人甚至不支持它(IE)。
答案 2 :(得分:0)
当然,这是为了处理大量数据,您可以使用jLinq (disclaimer: my project)来选择和查询您的记录,然后返回您想要的内容。
同样,这非常适用于您处理大量对象和进行查询的情况,但您可能会在查看源代码时获得一些想法。