2016-10-04 91 views
0

使用JavaScript,从多暗数组中获取所有X的列表并将其放入新数组中的最佳方式是什么?如果可能,我想使用reduce或map?这个过程有没有一个术语,我应该像数学过程那样意识到?从多维数组中获取X的数组

[{x:0,y:8,z:-1}, {x:1, y:8.5, z:-0.5}, {x:2, y:9, z:0}]

,并添加此很晚(如果可能的话用这个希望的解决方案):

[[0,8,-1], [1, 8.5, -0.5], [2, 9, 0]]

我怎么只是X的:

[0,1,2] 
+0

ahh谢谢。现在修复它 –

+2

'console.log([{x:0,y:8,z:-1},{x:1,y:8.5,z:-0.5},{x:2,y:9,z :0}]。map(e => ex));' –

+0

是JavaScript吗? –

回答

1

在这里你走。也许不那么聪明,但我相信你可以理解该脚本的每一行。

var arr = [{x:0,y:8,z:-1}, {x:1, y:8.5, z:-0.5}, {x:2, y:9, z:0}]; 
 
var array = []; 
 
    for (var i = 0; i < arr.length; i++) { 
 
    for (var key in arr[i]) { 
 
     array.push(arr[i][key]); 
 
     break; 
 
    } 
 
    } 
 
console.log(array);

+1

这将返回第一个键,它不一定是'x'(考虑'[... {y:5,x:1} ...') – georg

+1

对象不保证属性的顺序,您的代码需要第一个属性来自每个对象。 –

+1

同意。我认为他应该精确。因为只有'X'可以通过两种方式来理解。首先,他只需要'X's,而第二种方法 - 他只需要每个对象的第一个关键值。 @georg –

0
var points = [[0,8,-1], [1, 8.5, -0.5], [2, 9, 0]]; 
    var abscissas = points.reduce((a,v)=> {a.push(v[0]); return a}, []); 
    // abscissas array is now [0,1,2] 

过程使用points阵列中的每个条目reduce(如需要)推点X坐标(v[0])到作为以前的值传递的累积阵列。

必须有这样做的,使用Array.prototype.map比使用reduce简单的方法很多:

var abscissas = points.map((v)=>v[0]) 

我会打电话的数学过程“投射到x轴”,而是一个数学家可能会有所不同。

+0

啊,查看它,并且使用[[1],[1],[1]]乘法的投影在我猜测的JavaScript中可能是不可能的。 –