我正在尝试构建 mapDeep
函数(以递归方式映射嵌套数组):
mapDeep (array, callback) {
return array.map(item => {
if (Array.isArray(Object.values(item)[0])) {
return mapDeep(Object.values(item)[0])
} else {
return callback(Object.values(item)[0])
}
})
},
mapDeep(input.schema, field => {
console.log('field:', field)
})
现在我收到以下错误:Uncaught TypeError: callback is not a function
如何修改代码来修复功能?
输入:
schema: [{
fields: [{
(...)
}, {
(...)
}]
}, {
fields: [{
(...)
}]
}]
答案 0 :(得分:2)
将参数传递给递归调用:
function mapDeep (array, callback) {
return array.map(item => {
if (Array.isArray(Object.values(item)[0])) {
return mapDeep(Object.values(item)[0], callback)
// ^^^^^^^^
} else {
return callback(Object.values(item)[0])
}
})
}