Arhn - архитектура программирования

JavaScript/ES 6: сравнение длины массивов в объекте

У меня есть объект, содержащий несколько таких массивов

someObj = {
    array1:['a', 'b'],
    array2:['a', 'b', 'c'],
    array3:['a', 'b', 'c', 'd']
}

Есть ли какой-либо встроенный метод или свойство в JS/ES6, которое возвращает самый большой массив или длину самого большого массива? Пожалуйста, предложите


  • Для этого вы должны перебирать каждое значение и сравнивать длину массивов. 14.03.2018
  • @Bergi Использование Object.values не было бы безопаснее, поскольку IE его не поддерживает. Вместо этого мы могли бы использовать maps. 14.03.2018
  • @RajaprabhuAravindasamy Кого волнует IE? Установите полифил или, что более важно, используйте транспилятор для синтаксиса распространения. Обратите внимание, что OP попросил ES6, он, вероятно, тоже согласен с ES8. 14.03.2018
  • @bergi Всегда приятно слышать такие комментарии. Все серьезные разработки JS в наши дни используют транспиляторы. В наши дни нет необходимости писать ES5. Это как писать на ассемблере. Ой, подождите, ES5 — это язык ассемблера для Интернета. Не предназначено для написания, мои люди. Это цель транспилятора. Или должно быть. 14.03.2018
  • @RayToal Я думаю, что многие серьезные разработки JS изначально запускают современный код без каких-либо транспиляторов. Они нужны вам только в том случае, если вам нужно поддерживать старые среды. Кстати, я из старой школы и до сих пор предпочитаю собирать свой код ES5 вручную :-) 14.03.2018
  • @Bergi Я использую Typescript и получаю сообщение об ошибке: свойство «значения» не существует для типа «ObjectConstructor» 14.03.2018
  • @pupil stackoverflow.com/q/42966362/1048572 14.03.2018
  • Есть также старая версия: «Эй, мы используем этот код в частной интрасети, где у каждого есть современный обновленный браузер, изначально работающий на ES2017+». Но да, для JS в дикой природе это должен быть ES5 (будь то нативный или транспилированный). Хотя писать код без спредов, деструктуризации, интерполяции, промисов и т.п. это просто.... содрогание :-) 14.03.2018

Ответы:


1

Вы можете просто использовать цикл for и перебирать его, сравнивая длину массивов.

    var someObj = {
    array1:['a', 'b'],
    array2:['a', 'b', 'c'],
    array3:['a', 'b', 'c', 'd']
    }

    var max=0;
    for(x in someObj){ 
       someObj[x].length > max ? max=someObj[x].length : max;
    }

    console.log(max);

14.03.2018

2

Вы можете использовать Array.prototype.reduce и проверить значение аккумулятора с длиной массива.

Используйте Object.values(), чтобы получить все значения массива.

var someObj = {
    array1:['a', 'b'],
    array2:['a', 'b', 'c'],
    array3:['a', 'b', 'c', 'd'],
    array4:['a', 'b', 'c']
}

var maxLength = Object.values(someObj).reduce((a,e) => { return a > e.length ? a:e.length}, 0);

console.log(maxLength);

14.03.2018

3

Вы можете использовать Object.values, чтобы получить все значения для любого объекта. Вот аккуратный ваншот, который вернет самый длинный список в сочетании с reduce:

const longestList = Object.values(someObj)
  .reduce((longest, list) => list.length > longest.length ? list : longest)
14.03.2018
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..