這是我的輸入:
const arr = [10,20,[40,50,60],70,80,[90,100],111,112];
輸出我想要的:
{10:10,20:20,'array1':{40:40,50:50,60:60},70:70,80:80,'array2':{90:90,100:100},111:111,112:112}
uj5u.com熱心網友回復:
我使用Array.prototype.reduce()的方法。僅處理 1 級嵌套陣列。
const arr = [10,20,[40,50,60],70,80,[90,100],111,112];
let count=1;
let a = arr.reduce((acc,curr) => {
if(Array.isArray(curr)){
let b = curr.reduce((acc1,curr1)=> {
acc1[curr1] = curr1;
return acc1
},{})
acc[`array${count}`] = b;
count =1;
}
else{
acc[curr] = curr;
}
return acc;
},{})
console.log(a)
由于它是一個物件,它不一定必須按照您給出的順序。
uj5u.com熱心網友回復:
只需回圈遍歷陣列,隨時格式化一個新物件:
let array_count = 1;
let obj = {}
arr.forEach((el) => {
if(Number.isInteger(el)){
obj[el] = el;
} else {
inline_obj = {}
el.forEach((e2) => inline_obj[e2] = e2);
obj[`array${array_count}`] = inline_obj;
array_count = 1;
}
})
uj5u.com熱心網友回復:
這是一個使用 reduce() 的遞回解決方案,如果需要,它也適用于更深的嵌套陣列。
function foo(array){
let arrCounter=0;
return array.reduce((acc,curr)=>{
if(!Array.isArray(curr)) acc[curr]=curr
else{ arrCounter =1;
acc[`array${arrCounter}`]=foo(curr)
}
return acc;
},{})
}
const arr = [10,20,[40,50,60],70,80,[90,100],111,112];
console.log(foo(arr));
const deepArr = [10,20,[40,50,60],70,80,[90,100,[40,50,60]],111,112];
console.log(foo(deepArr));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411935.html
標籤:
