2016-10-04 11 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

ありがとうございます。今すぐ固定する –

+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'だけが2つの方法で理解できるためです。まず、彼は「X」だけを望んでおり、第2の方法 - それぞれのオブジェクトからの最初のキー値だけを望みます。 @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では不可能でしょう。 –