检查哪个数组在对象内具有最大长度

时间:2017-11-06 19:15:21

标签: javascript arrays object

我使用lodash.js,但似乎没有办法做到这一点。 我试过自己,但对结果不满意

function checkHighestArrayCountFromObject(object) {
  var counter = 0;
  for (let property in object) {
    if (object.hasOwnProperty(property)) {
      counter = object[property].length > counter ? object[property].length : counter
    }
  }
  return counter
}


var obj = {
  a: [2, 3, 4, 5],
  b: [2, 3, 4],
  c: [2, 3],
  d: [2],
}

console.log(checkHighestArrayCountFromObject(obj)) // => length of (a) should be returned

我没看到什么。

5 个答案:

答案 0 :(得分:1)

您可以使用Object.values从对象获取值, 将它们映射到它们的长度, 最后使用reduce找到最大值:

Object.values(obj).map(a => a.length).reduce((a, b) => Math.max(a, b))

答案 1 :(得分:0)

另一种写这个的简洁方法是使用curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

*/**/*.js

答案 2 :(得分:0)

如果使用Lodash,您可以使用_.max

_.max(Object.values(obj).map(a => a.length))

答案 3 :(得分:0)

const obj = {
  a : [2,3,4,5],
  b : [2,3,4,],
  c : [2,3],
  d : [2],
}

_.chain(obj)
.reduce((max,v,k)=> {
  if(v.length>max.len){
    max.len = v.length;
    max.key=k
  };
  return max
},{len:-1,key:''})
.get('key').value()

或者只需对obj执行reduce操作并从结果中获取属性键

答案 4 :(得分:0)

如果使用lodash,您可以使用reduce

_.reduce(obj, (max, n) => n.length > max ? n.length : max, 0);