Javascript 在包含对象的数组中查找最小值和最大值

Javascript 在包含对象的数组中查找最小值和最大值,javascript,arrays,object,max,min,Javascript,Arrays,Object,Max,Min,我有一个数组,里面有对象: var pts = [ { "X": 52.67528921580262, "Y": 8.373513221740723 }, { "X": 52.6759657545252, "Y": 8.374114036560059 }, { "X": 52.682574466310314, "Y": 8.37256908416748 }, { "X": 52.68356308524067, "Y": 8.373942375183105

我有一个数组,里面有对象:

var pts = [
    { "X": 52.67528921580262,  "Y": 8.373513221740723 },
    { "X": 52.6759657545252,   "Y": 8.374114036560059 },
    { "X": 52.682574466310314, "Y": 8.37256908416748  },
    { "X": 52.68356308524067,  "Y": 8.373942375183105 },
    { "X": 52.68293869694087,  "Y": 8.375487327575684 },
    { "X": 52.67685044320001,  "Y": 8.376259803771973 },
    { "X": 52.6756535071859,   "Y": 8.379607200622559 },
    { "X": 52.676017795531436, "Y": 8.382096290588379 },
    { "X": 52.68101344348877,  "Y": 8.380722999572754 },
    { "X": 52.68351105322329,  "Y": 8.383641242980957 },
    { "X": 52.68,              "Y": 8.389             }
];

如何找到最小值,最大值代表X和最小值,最大值代表Y?

您可以调用
Math.min
Math.max
,传入一个只包含如下相关值的映射数组:

函数endProp(mathFunc、数组、属性){
返回数学[mathFunc].apply(数组,数组.map)(函数(项){
归还物品[财产];
}));
}
var maxY=endProp(“max”,pts,“Y”),//8.389
minY=endProp(“min”,pts,“Y”);//8.37256908416748

对数组进行排序可能是最简单的

array.sort(function minXToMaxX(a,b){
   return a.x - b.x;
});

最小的
x
值位于
array[0]
。最高的
x
值位于
array[array.length-1]

此代码工作正常。有关演示,请参见snippt

var-pts=[{
“X”:52.67528921580262,
“Y”:8.373513221740723
}, {
“X”:52.6759657545252,
“Y”:8.374114036560059
}, {
“X”:52.682574466310314,
“Y”:8.37256908416748
}, {
“X”:52.68356308524067,
“Y”:8.373942375183105
}, {
“X”:52.68293869694087,
“Y”:8.375487327575684
}, {
“X”:52.67685044320001,
“Y”:8.37625903771973
}, {
“X”:52.6756535071859,
“Y”:8.379607200622559
}, {
“X”:52.676017795531436,
“Y”:8.382096290588379
}, {
“X”:52.68101344348877,
“Y”:8.380722999572754
}, {
“X”:52.68351105322329,
“Y”:8.383641242980957
}, {
“X”:52.68,
“Y”:8.389
}];
var xobj=[];
var yobj=[];
var len=点长度;
对于(变量i=0;i值){
值=xobj[n];
}
}
//最低x值
var valuel=xobj[0];
对于(var n=1;nvalueY){
valueY=yobj[n];
}
}
//最低x值
var值=yobj[0];
对于(var n=1;n
Minx:

最大值:

米尼:

马克西:

是否尝试在数组上循环,并将值与{x/y}{min/max}的四个变量进行比较?如果您尝试过,这种方法的哪一部分会给您带来问题?将第一个对象的x和y值存储为x和y的最小值和最大值。然后循环遍历其余的对象。对于每个对象,将该对象x和y与x和y的最小值和最大值进行比较。如果您为x或y找到了新的最小值或最大值,请用它替换旧的最小值或最大值。