Javascript 从多个对象数组返回值最高的对象

Javascript 从多个对象数组返回值最高的对象,javascript,arrays,ecmascript-6,array.prototype.map,Javascript,Arrays,Ecmascript 6,Array.prototype.map,我有一个包含多个对象数组的数组,我正试图找到值最高的对象 values = [ [ {_: "NAN", id: 1}, {_: "NAN", id: 2}, {_: "NAN", id: 3} ], [{_: "3.006", id: 4}, {_: "7.206", id: 5}, {_: "1.906", id: 6} ], [{_: "3.226", id: 7}, {_: "2.222", id: 8} {_: "2.224", id: 9} ], [{_: "0.00

我有一个包含多个对象数组的数组,我正试图找到值最高的对象

values = [
[ {_: "NAN", id: 1},
  {_: "NAN", id: 2},
  {_: "NAN", id: 3}
],
[{_: "3.006", id: 4},
 {_: "7.206", id: 5},
 {_: "1.906", id: 6}
],
[{_: "3.226", id: 7},
 {_: "2.222", id: 8}
 {_: "2.224", id: 9}
],
[{_: "0.006", id: 10},
 {_: "0.321", id: 11},
 {_: "0.938", id: 12}
]]
我试着使用。地图和。查找

        var a = Math.max(...values.map(e => e._))
        const highestPoint = values.find(values => values._ === a)

但是它只把NAN作为最高点
const highestPoint={:“NAN”,id:1}
,就像它只查看第一个数组一样?

你可以平整数组,使用过滤器并减少数组

代码>var值的<代码>var值<<<代码>var值=[{{{{{{“纳米:“纳米”,”id:2},{{{“纳米”,id:3},{{{{“3.006”,id值<{{{{{{“纳米:“纳米”的“纳米”,id:1.N,id:1.1,id:1},{{{“纳米”,id:2},id:3},,,{{{{{{:“3.006:“3.006:“3.2006”,3.00,3.0,3},3},3},,,,,,,,,,,,,,{{{{{{{{3.3.3.006:“3.00,3.00,3.0,3.2006,3.0,3.00,id:3.0,3.0,id:3,3,id:3,3,3,3,3,3,3,,,,,,,, 最高=值 .flat() .filter(({{})=>isFinite(})) .减少((a,b)=>+a.>+b.?a:b);
console.log(最高)您可以使用
Array.flatMap()
Array.map()
将所有对象放在一个数组中,
Array.filter()
删除带有“NAN”的对象,然后使用
数组。减少
以查找最大数量:

“NAN”,id:2},{“NAN”,id:2},{“NAN”,id:2},{“NAN”,id:3},id:3},{::“3.006”,id:3.006,id:4},{{:“3.006”,id:4},{{{{{{::,[学校:“3.校园:“NAN”,id:3.3},id:3},,,,,,,,,,,,{{,{::“3.3.006:“3.2006,3.2006”,id:3.00,id:3.00,id:3.00,id:3},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{{{{{{{,{{{{,,,,id:3.3.3.00,id:3.00,id:3.00,id:3]; 设res=vals.flatMap(arr=>{ 返回arr.map(obj=>obj) }).filter(obj=>obj.\uv!=“NAN”).reduce((prv,cur)=>prv.\uv>cur.\uv?prv:cur)
console.log(res)
Math.max
的任何参数不是数字时,结果将是
NaN

您有一个数组,因此在映射时将数组作为
Math.max的参数,因此需要过滤数据,然后将其传递给max

像这样的东西应该有用

values.flat().filter(item=>!isNaN(Number(item.)))


然后,您可以将此消息传递到max,并将其运行。

足够简单和快速:

const max = (arr = []) => {
  return arr.reduce(
    (m, i) => {
      i.forEach((x) => {
        if (x._ !== 'NAN' && m._ < x._) {
          m = x;
        }
      });
      return m;
    },
    { _: -Infinity }
  );
};
const max=(arr=[])=>{
返回arr.reduce(
(m,i)=>{
i、 forEach((x)=>{
如果(x.!='NAN'和&m.ux.){
m=x;
}
});
返回m;
},
{}:-无穷大}
);
};
const max=(arr=[])=>{
返回arr.reduce(
(m,i)=>{
i、 forEach((x)=>{
如果(x.!='NAN'和&m.ux.){
m=x;
}
});
返回m;
},
{}:-无穷大}
);
};
常数数据=[
[
{uunan',id:1},
{uunan',id:2},
{uunan',id:3},
],
[
{:“3.006”,id:4},
{{:“7.206”,id:5},
{{:“1.906”,id:6},
],
[
{{:“3.226”,id:7},
{{:“2.222”,id:8},
{:“2.224”,id:9},
],
[
{:“0.006”,id:10},
{:“0.321”,id:11},
{{:“0.938”,id:12},
],
];

console.log(最大值(数据))Array.flat()
就是所需要的。我使用的是
Array.flatMap()
!我认为当数组中有+无穷大时,使用isFinite将排除正确的最大值。