私の配列は次のとおりです。
var a = new Array();
a[0] = {x: 10,y: 10};
a[1] = {x: 20,y: 50};
a[2] = {x: 30,y: 20};
a[3] = {x: 10,y: 10};
var min = Math.min.apply(null, a.x)
動作しません。いくつかのアイデア?
私の配列は次のとおりです。
var a = new Array();
a[0] = {x: 10,y: 10};
a[1] = {x: 20,y: 50};
a[2] = {x: 30,y: 20};
a[3] = {x: 10,y: 10};
var min = Math.min.apply(null, a.x)
動作しません。いくつかのアイデア?
あなたは正しい考えを持っていました.apply
が、値のコレクションを渡す必要がありx
ます。
var xVals = a.map(function(obj) { return obj.x; });
var min = Math.min.apply(null, xVals);
この.map()
メソッドは、各反復で返されたもので構成される新しい配列を作成します。
[10, 20, 30, 10]
次に、配列を2番目の引数として渡すと、配列.apply
のメンバーが個別の引数として分散されます。つまり、これを行ったかのようです。
Math.min(10, 20, 30, 10) // 10
ただし、する必要があるため.map()
、をスキップしてMath.min
、代わりに使用することをお勧めします.reduce
。
var min = a.reduce(function(min, obj) {
return obj.x < min ? obj.x : min;
}, Infinity);