获取具有最多元素数量的对象

时间:2018-11-13 17:18:20

标签: javascript jquery arrays for-loop

我正在尝试获取元素数量最多的对象并获取元素数量。

我目前有以下内容:

var array = [
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }],
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }],
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }]
];

for (var i = 0; i < array.length; i++) {
  console.log(array[i].length);

  //Here I need to get the bigger number in this case is 3, because I need it to another validations inside this for loop
}

在这种情况下,我知道什么是更大的对象,但是我需要获取数字并将其保存在变量中,因为之后需要进行一些验证。

我希望你能理解我并帮助我

4 个答案:

答案 0 :(得分:1)

您可以使用reduce来获取最大的子数组(然后是其长度):

var array = [
  [{
      'id': 1,
      'value': 100
    },
    {
      'id': 1,
      'value': 100
    }
  ],
  [{
      'id': 1,
      'value': 100
    },
    {
      'id': 1,
      'value': 100
    },
    {
      'id': 1,
      'value': 100
    }
  ],
  [{
      'id': 1,
      'value': 100
    },
    {
      'id': 1,
      'value': 100
    }
  ]
];

var largest = array.reduce((a, c) => a.length < c.length ? c : a);
console.log(largest);
console.log(largest.length);

答案 1 :(得分:0)

您只需在sort中按长度descending order即可获得top element

var array = [ [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }], [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }], [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }] ];

const r = array.sort((a,b) => b.length - a.length)[0]

console.log('element:', r, ', length:', r.length)

答案 2 :(得分:0)

下面的代码应找到最长的数组并显示其内容和长度。您还需要查找其他一些数据并将其存储在变量中吗?

var array = [
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }],
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }],
  [{
    'id': 1,
    'value': 100
  }, {
    'id': 1,
    'value': 100
  }]
];

var result = {
    length: 0
};

for (var i = 0; i < array.length; i++) {
  if(array[i].length >= result.length){
      result = array[i];
  } 
}

console.log(result.length);
console.log(result);

答案 3 :(得分:0)

遍历数组的每个元素,检查每个子数组的长度,并存储子数组最大长度的索引。

var array = [ [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }], [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }], [{ 'id': 1, 'value': 100 }, { 'id': 1, 'value': 100 }] ];

var subArrayLength = 0;
var index = 0; 
for(var i = 0; i < array.length; i++)
{
   if(subArrayLength < array[i].length){
            index = i;
            subArrayLength = array[i].length;
   }
}

console.log(array[index]);
console.log(index);