从数组的JavaScript对象获取最大数量的数组项

时间:2016-06-04 03:26:46

标签: javascript

我有一个JavaScript对象,它是数组的对象。当我将它打印到控制台时,它看起来如下图所示。

  • 3对象键0,1和2
  • 每个对象键都有一个数组作为其值

我需要从对象中获取最大数量的数组项作为计数。

现在每个人都有3个数组项目,但在我的应用程序中,每个数组都有不同的数字,我需要确定哪个项目的数量最多,并将该数字保存到变量。\

我该怎么做?

enter image description here

5 个答案:

答案 0 :(得分:1)

这是你需要的吗?

var number = 0;
var box;
Object.keys(object).map(array => {
    box = object[array].length;
    if(number > box) {
        number = box;
    }
});

答案 1 :(得分:1)

您可以使用.reduce

var obj = {0:[1,2,3,4],1:[3,4,7],2:[3,4,5,6,7,8],3:[5,6,7]};
Object.keys(obj)
.reduce(function(res,key){
  if(res.length <obj[key].length){
    res.highestKey = key;
    res.length = obj[key].length;
    res.arr =  obj[key];
  }
   return res;  

},{highestKey:null,length:0, arr:null})

// will give
//{highestKey: "2", length: 6, arr: Array[6]}

答案 2 :(得分:1)

您可以使用for in循环。

var object={
0: [1,21,3],
1: [1,2321,3,123,213]
};
var number = 0;
for (var i in object) {
  if (object[i].length > number) {
    number = object[i].length;
  }
}
console.log(number);

答案 3 :(得分:0)

以下是ES6方式:

var A = {
  0:[1,2,3,4],
  1:[3,4,7],
  2:[3,4,5,6,7,8],
  3:[5,6,7]
}

const returnGreatestLength = (arr) => {
    return Math.max(...Array.from(
             {...arr, length: Object.keys(arr).length}, (v) => v.length
           ))
}

这是另一个:你可以把代码放在函数中。

var a = {
  0: [1,2,3,4],
  1: [3,4,5],
  2: [3,4,5,6,7]
}

var largestArrayLength = a[Object.keys(a).sort((x, y) => {
  return a[x].length < a[y].length
}).shift()].length

或其他方式:

var a = {
  0: [1,2,3,4],
  1: [3,4,5],
  2: [3,4,5,6,7]
}
a[Object.keys(a).reduce((p,c) => {
   return (p.length > a[c].length) ? p : c 
}, [])].length

答案 4 :(得分:0)

这是另一个:

&#13;
&#13;
function getHighest(obj){
  keys = Object.keys(obj);
  if(!keys.length)
    return 0;
  
  max = obj[keys[0]].length;
  for(i=1; i<keys.length; i++ )
    {
      if(obj[keys[i]].length > max)
        max = obj[keys[i]].length;
    }
  return max;
}

obj = 
{
  '0': ['a', 'b', 'c', 'd'],
  '1': ['a', 'b'],
  '2': ['a', 'b', 'c']
};

console.log(getHighest(obj));
&#13;
&#13;
&#13;