2016-10-04 94 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中可能是不可能的。 –