小技巧:只要出现了“规则复 现”就要想到用递归。
方法一:
var arr = [1, 2, [3, [4, 5], 6], 7, [8], 9]
function convert (arr) {
var obj = {children: []}
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number') {
obj.children.push({value: arr[i]})
} else if (Array.isArray(arr[i])) {
obj.children.push(convert(arr[i]))
}
}
return obj
}
var o = convert(arr)
console.log(o)
方法二:
var arr = [1, 2, [3, [4, 5], 6], 7, [8], 9]
function convert1 (item) {
if (typeof item === 'number') {
return { value: item }
} else if (Array.isArray(item)) {
return { children: item.map(_item => convert1(_item)) }
}
}
var o1 = convert1(arr)
console.log(o1)