Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—从对象数组创建数组的好方法_Javascript_Jquery - Fatal编程技术网

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

Javascript—从对象数组创建数组的好方法,javascript,jquery,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); }

我有一个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);
}
var newarray=[];
对于(var i=0;i
…但我想知道是否有一种很好的使用jquery甚至常规javascript的单行程序方法来实现这一点

您可以通过以下方式完成此操作:


假设这是为了处理大量数据,您可以使用它来选择和查询记录,然后返回所需内容


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

ECMAScript 5具有本机
map()
方法:

var newArray = array.map(function(value) { return value.x; });

在FF中,这应该比循环更快,但并非所有浏览器都如此(Opera);其他人甚至不支持它(即)。

代码的对象部分是错误的。您的x/y对象没有任何关键点。我想我应该指出这一点。@musicfreak我想他是说他的对象有两个属性,x和y:{x:foo,y:bar}@Gabe-你是对的,我的意思是对象有属性如果他不关心跨浏览器解决方案,那么在FF(支持Javascript 1.8)中他可以做:var arr=array.map(function(v)v.x);或者:var arr=[v.x代表每个(数组中的v)];不幸的是,跨浏览器兼容性是必要的。
var newArray = array.map(function(value) { return value.x; });