Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript获取对象数组中最大的对象_Javascript - Fatal编程技术网

Javascript获取对象数组中最大的对象

Javascript获取对象数组中最大的对象,javascript,Javascript,我想得到一个对象数组中最大的对象,我使用的代码工作得很好,但我想知道是否有更好的方法来实现这一点。这是我正在使用的代码 数据=[ {组:“a”,a:65,N:20}, {组:“b”,R:52}, {组:“c”,N:20,A:2,R:2}, {组:“d”,R:15,N:12}, ] len=[] 用于(数据中的var i){ len.push(对象键(数据[i])长度) } 用于(数据中的var i){ if(Object.keys(data[i]).length==Math.max.apply

我想得到一个对象数组中最大的对象,我使用的代码工作得很好,但我想知道是否有更好的方法来实现这一点。这是我正在使用的代码

数据=[
{组:“a”,a:65,N:20},
{组:“b”,R:52},
{组:“c”,N:20,A:2,R:2},
{组:“d”,R:15,N:12},
]
len=[]
用于(数据中的var i){
len.push(对象键(数据[i])长度)
}
用于(数据中的var i){
if(Object.keys(data[i]).length==Math.max.apply(null,len)){
subgroups=Object.keys(数据[i]).slice(1.sort();
}
}

控制台日志(子组)
您可以使用填充
len
数组时使用的条件对数组进行排序

data.sort((x, y) => {
  return Object.keys(y).length - Object.keys(x).length
});
结果:

0: {group: "c", N: 20, A: 2, R: 2}
1: {group: "a", A: 65, N: 20}
2: {group: "d", R: 15, N: 12}
3: {group: "b", R: 52}

我认为一个循环就足以做到这一点

var数据=[
{组:“a”,a:65,N:20},
{组:“b”,R:52},
{组:“c”,N:20,A:2,R:2},
{组:“d”,R:15,N:12},
],
max=Object.keys(数据[0])长度,
largestObj=数据[0];
data.forEach(i=>{
if(对象键(i).长度>最大值){
最大值=对象。键(i)。长度;
最大目标j=i;
}
});
控制台日志(最大值);

控制台日志(最大对象)使用
Array.prototype.reduce的示例

const [biggestObject] = data.reduce(
  ([acc, length], entry) => {
    const len = Object.keys(entry).length;
    return length > len ? [acc, length] : [entry, len];
  },
  [{}, 0]
);

要对整个数组进行排序似乎很愚蠢,使用reduce函数一个循环就足够了

const { element } = data.reduce((agg, element) => {
  const length = Object.keys(v).length
  if (length > agg.length) {
    return { element, length }
  } 
  return agg
}, { element: null, length: 0 })

我只得到物体的长度,没有物体,没有必要保留整个物体。我们可以简单地保留对象的键。您在这里对“最大”的定义是具有最多属性的对象,还是数值总和最大的对象?您真正期望的结果是什么?一个元素上的最大键数,这个元素在表中的位置,还有其他的吗?不需要第二个
for
循环。我不喜欢这种方法,因为它没有很好的性能,不必要地对所有元素进行排序,但我们只需要最高的