JavaScript/ES 6:比较对象中的数组长度

问题描述 投票:0回答:3

我有一个包含多个这样的数组的对象

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

JS/ES6 中是否有内置方法或属性返回最大数组或最大数组的长度?请推荐

javascript ecmascript-6
3个回答
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);


1
投票

您可以使用

Object.values
获取任何对象的所有值。这是一个简洁的单例,它将与
reduce
结合返回最长的列表:

const longestList = Object.values(someObj)
  .reduce((longest, list) => list.length > longest.length ? list : longest)

0
投票

您可以简单地使用 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);

© www.soinside.com 2019 - 2024. All rights reserved.