我如何轉換這個:
input = [1,2,[4,5,6],7,8,[9,0],11,12]
對此:
{1:1,2:2,'array1':{4:4,5:5,6:6},7:7,8:8,'array2':{9:9,0:0},11:11,12:12}
我試過這個:
Object.assign({}, input);
但是物件索引的值從 0 開始。我希望它從 1 開始。另外我如何命名陣列中的陣列:比如陣列 1 和陣列 2?
uj5u.com熱心網友回復:
您可以構建新物件并保留嵌套陣列的計數。
const
convert = (array, count = { n: 1 }) => Object.fromEntries(array.map(v => Array.isArray(v)
? ['array' count.n , convert(v, count)]
: [v, v]
)),
data = [1, 2, [4, 5, 6], 7, 8, [9, 0], 11, 12],
result = convert(data);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
您的輸入中有兩層陣列,因此您不能像以前那樣只使用 Object.assign()。
你應該這樣做:
const input = [1,2,[4,5,6],7,8,[9,0],11,12]
const secondLevelArrToObj = input.map(elt => {
let countingArr = 1
if (Array.isArray(elt)) {
const obj = {}
const arrNum = 'array' countingArr
obj[arrNum] = Object.assign({}, elt)
countingArr = 1
return obj
} else {
return elt
}
})
const output = Object.assign({}, secondLevelArrToObj)
console.log(output)
關于您的問題:您將始終擁有從物件中的 0 開始的索引。JS 就是這樣作業的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360021.html
