Получите объект с наибольшим количеством элементов - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь получить объект с наибольшим количеством элементов и получить количество элементов.

В настоящее время у меня есть следующее:

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 голосов
/ 13 ноября 2018

Итерация по каждому элементу массива, проверка длины каждого подмассива и сохранение индекса максимальной длины подмассива.

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);
0 голосов
/ 13 ноября 2018

Вы можете просто 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)
0 голосов
/ 13 ноября 2018

Следующий код должен найти самый длинный массив и отобразить его содержимое и длину. Есть ли какие-то другие данные, которые вам нужно найти и сохранить в переменной?

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);
0 голосов
/ 13 ноября 2018

Вы можете использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...