Javascript - 从对象数组创建数组的好方法

时间:2009-06-11 19:11:51

标签: javascript jquery

我有一个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来做到这一点?

3 个答案:

答案 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)来选择和查询您的记录,然后返回您想要的内容。

同样,这非常适用于您处理大量对象和进行查询的情况,但您可能会在查看源代码时获得一些想法。