我有一个JavaScript对象,它是数组的对象。当我将它打印到控制台时,它看起来如下图所示。
我需要从对象中获取最大数量的数组项作为计数。
现在每个人都有3个数组项目,但在我的应用程序中,每个数组都有不同的数字,我需要确定哪个项目的数量最多,并将该数字保存到变量。\
我该怎么做?
答案 0 :(得分:1)
这是你需要的吗?
var number = 0;
var box;
Object.keys(object).map(array => {
box = object[array].length;
if(number > box) {
number = box;
}
});
答案 1 :(得分:1)
您可以使用.reduce
var obj = {0:[1,2,3,4],1:[3,4,7],2:[3,4,5,6,7,8],3:[5,6,7]};
Object.keys(obj)
.reduce(function(res,key){
if(res.length <obj[key].length){
res.highestKey = key;
res.length = obj[key].length;
res.arr = obj[key];
}
return res;
},{highestKey:null,length:0, arr:null})
// will give
//{highestKey: "2", length: 6, arr: Array[6]}
答案 2 :(得分:1)
您可以使用for in
循环。
var object={
0: [1,21,3],
1: [1,2321,3,123,213]
};
var number = 0;
for (var i in object) {
if (object[i].length > number) {
number = object[i].length;
}
}
console.log(number);
答案 3 :(得分:0)
以下是ES6方式:
var A = {
0:[1,2,3,4],
1:[3,4,7],
2:[3,4,5,6,7,8],
3:[5,6,7]
}
const returnGreatestLength = (arr) => {
return Math.max(...Array.from(
{...arr, length: Object.keys(arr).length}, (v) => v.length
))
}
这是另一个:你可以把代码放在函数中。
var a = {
0: [1,2,3,4],
1: [3,4,5],
2: [3,4,5,6,7]
}
var largestArrayLength = a[Object.keys(a).sort((x, y) => {
return a[x].length < a[y].length
}).shift()].length
或其他方式:
var a = {
0: [1,2,3,4],
1: [3,4,5],
2: [3,4,5,6,7]
}
a[Object.keys(a).reduce((p,c) => {
return (p.length > a[c].length) ? p : c
}, [])].length
答案 4 :(得分:0)
这是另一个:
function getHighest(obj){
keys = Object.keys(obj);
if(!keys.length)
return 0;
max = obj[keys[0]].length;
for(i=1; i<keys.length; i++ )
{
if(obj[keys[i]].length > max)
max = obj[keys[i]].length;
}
return max;
}
obj =
{
'0': ['a', 'b', 'c', 'd'],
'1': ['a', 'b'],
'2': ['a', 'b', 'c']
};
console.log(getHighest(obj));
&#13;