Javascript 查找数组内嵌套对象中元素的最大值

Javascript 查找数组内嵌套对象中元素的最大值,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个多维数组,看起来像: [ { j: 15, temps: 33.55, pressureVal: 1021, cloudCover: 95 }, { j: 16, temps: 34.05, pressureVal: 1019, cloudCover: 98 }, { j: 16, temps: 32.14, pressureVal: 1018, cloudCover: 99 }, { j: 16, temps: 32.16, pressureVal: 1016, cloud

我有一个多维数组,看起来像:

[ { j: 15, temps: 33.55, pressureVal: 1021, cloudCover: 95 },
  { j: 16, temps: 34.05, pressureVal: 1019, cloudCover: 98 },
  { j: 16, temps: 32.14, pressureVal: 1018, cloudCover: 99 },
  { j: 16, temps: 32.16, pressureVal: 1016, cloudCover: 100 },
  { j: 16, temps: 32.68, pressureVal: 1014, cloudCover: 100 },
  { j: 16, temps: 32, pressureVal: 1015, cloudCover: 99 },
  { j: 16, temps: 33.53, pressureVal: 1016, cloudCover: 92 },
  { j: 16, temps: 37.06, pressureVal: 1017, cloudCover: 89 },
  { j: 16, temps: 37.69, pressureVal: 1016, cloudCover: 48 },
  { j: 17, temps: 34.86, pressureVal: 1017, cloudCover: 71 },
  { j: 17, temps: 33.78, pressureVal: 1019, cloudCover: 60 },
  { j: 17, temps: 33.53, pressureVal: 1019, cloudCover: 57 },
  { j: 17, temps: 32.45, pressureVal: 1019, cloudCover: 14 },
  { j: 17, temps: 32.61, pressureVal: 1019, cloudCover: 26 },
  { j: 17, temps: 36.5, pressureVal: 1019, cloudCover: 93 },
  { j: 17, temps: 39.13, pressureVal: 1018, cloudCover: 97 },
  { j: 17, temps: 39.74, pressureVal: 1017, cloudCover: 100 } ]

我需要找到每个不同j值的最大温度、压力和云量。您知道如何使用这种类型的数据结构吗?

您需要做的就是循环遍历所有项,并将其与另一组跟踪最大值的项进行比较

let items=[{j:15,temps:33.55,pressureVal:1021,cloudCover:95},
{j:16,温度:34.05,压力:1019,云量:98},
{j:16,温度:32.14,压力:1018,云量:99},
{j:16,温度:32.16,气压:1016,云量:100},
{j:16,温度:32.68,压力:1014,云量:100},
{j:16,温度:32,压力:1015,云量:99},
{j:16,温度:33.53,压力评估:1016,云量:92},
{j:16,温度:37.06,压力:1017,云量:89},
{j:16,温度:37.69,压力:1016,云量:48},
{j:17,温度:34.86,压力:1017,云量:71},
{j:17,温度:33.78,压力评估:1019,云量:60},
{j:17,温度:33.53,气压:1019,云量:57},
{j:17,温度:32.45,压力:1019,云量:14},
{j:17,温度:32.61,气压:1019,云量:26},
{j:17,温度:36.5,压力:1019,云量:93},
{j:17,温度:39.13,压力:1018,云量:97},
{j:17,温度:39.74,气压:1017,云量:100}]
让maxValues=[]
用于(项目的常数项){
让maxItem=maxValues.find(v=>v.j==item.j)
如果(!maxItem){
maxItem={j:item.j}
maxValues.push(maxItem)
}
如果(!maxItem.temps | | item.temps>maxItem.temps)
maxItem.temps=item.temps
如果(!maxItem.pressureVal | | item.pressureVal>maxItem.pressureVal)
maxItem.pressureVal=item.pressureVal
如果(!maxItem.cloudCover | | item.cloudCover>maxItem.cloudCover)
maxItem.cloudCover=item.cloudCover
}

console.log(最大值)
您可以使用
reduce
并同时按
j
属性分组,还可以通过检查同一键的当前元素值和累加器值来获取其他属性的最大值

const data=[{“j”:15,“temps”:33.55,“pressureVal”:1021,“cloudCover”:95},{“j”:16,“temps”:34.05,“pressureVal”:1019,“cloudCover”:98},{“j”:16,“temps”:32.14,“pressureVal”:1018,“cloudCover”:99},{“j”:16,“temps”:32.16,“pressureVal”:1016,“cloudCover”:100},{“j”:16,“temps”:32.68,“pressureVal”:1014,“cloudCover”:100},{“j”:16,“pressureVal”:32,“temps”:1015,“云盖”:99},{“j”:16,“temps”:33.53,“压力评估”:1016,“云盖”:92},{“j”:16,“temps”:37.06,“压力评估”:1017,“云盖”:89},{“j”:16,“temps”:37.69,“压力评估”:1016,“云盖”:48},{“j”:17,“temps”:34.86,“压力评估”:1017,“云盖”:71},{“j”:17,“temps”:33.78,“压力评估”:1019,“压力评估”:60,“压力评估”:17,“压力评估”:53,“云盖”:1019,“云盖”:57},{“j”:17,“temps”:32.45,“压力评估”:1019,“云盖”:14},{“j”:17,“temps”:32.61,“压力评估”:1019,“云盖”:26},{“j”:17,“temps”:36.5,“压力评估”:1019,“云盖”:93},{“j”:17,“temps”:39.13,“压力评估”:1018,“云盖”:97},{“j”:17,“temps”:39.74,“压力评估”:1017,“云盖”:100}]
const result=data.reduce((r,{j,…rest})=>{
如果(!r[j])r[j]={…rest}
否则{
为了(让我休息一下){
if(rest[i]>r[j][i]){
r[j][i]=剩余[i]
}
}
}
返回r;
}, {})

console.log(result)
查看扩展运算符
Math.max()
array.map
。如果您遇到具体问题,请随时在此发帖;否则,stackoverflow不是“DoX for me”类型的论坛。您的数据排序了吗?你试过什么?为什么投否决票?