我有一個像這樣的示例物件陣列
let items = [
{
a: '',
b: 2,
c: 3
},
{
a: '',
b: '',
c: 5,
d: 10
},
{
a: '',
b: '',
c: 6,
}
]
我想找到具有最多鍵數的第一個物件。
從上面可以清楚地看出,第二個物件的鍵數最多。
我怎樣才能做到這一點?
謝謝你。
uj5u.com熱心網友回復:
像這樣的東西會起作用:
let highestLength = 0;
let highestItem = 0;
for (let i = 0; i < items.length; i ) {
let objLength = Object.keys(items[i]).length;
if (objLength > highestLength) {
highestLength = objLength;
highestItem = i;
}
}
然后highestItem將保存具有最多鍵數的第一個元素的索引。
uj5u.com熱心網友回復:
.sort()從ing 按鍵數降序開始。然后回傳第一個元素。
let items = [{
a: '',
b: 2,
c: 3
},
{
a: '',
b: '',
c: 5,
d: 10
},
{
a: '',
b: '',
c: 6,
}
];
const mostkeys = items.sort(
(a,b) => Object.keys(b).length - Object.keys(a).length
)[0];
console.log( mostkeys );
但是,如果您有多個具有最多鍵的鍵并且您想全部回傳,那么在最后一步您的方法會略有不同:
let items = [{
a: '',
b: 2,
c: 3
},
{
a: '',
b: '',
c: 5,
d: 10
},
{
a: '',
b: '',
c: 6,
},
{
c: '',
d: '',
e: 6,
f: 3
}
];
const mostkeys = items.sort(
(a,b) => Object.keys(b).length - Object.keys(a).length
)
.reduce((m, cur, i, a) =>
i === 0 ? [...m,cur] : Object.keys(cur).length < Object.keys(m[0]).length ? m : [...m,cur], []
);
console.log( mostkeys );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/425110.html
標籤:javascript 数组
