var obj = [
{ type: 'number' },
{ type: 'string' },
{
type: 'array',
children: [
{ type: 'number' },
{ type: 'string' }
]
}
]
var convert = function(obj) {
return obj.map(o => ({
'number': 1,
'string': 's',
'array': convert(o.children)
}[o.type]))
}
var convert2 = function(obj) {
return obj.map(o => {
if (o.type === 'number') {
return 1
} else if (o.type === 'string') {
return 's'
} else if (o.type === 'array') {
return convert2(o.children)
} else {
return undefined
}
})
}
var converted = convert(obj)
var converted2 = convert2(obj)
Sebabnya ialah setiap atribut obj yang digunakan untuk penghakiman telah dikira sekali, dan sekatan bersyarat boleh ditambah untuk memperbaikinya:
Apabila terdapat sedikit syarat untuk dinilai, anda boleh menggunakan beberapa syarat trinokular untuk menilai Jika terdapat terlalu banyak penghakiman sedemikian, kaedah penulisan ini harus lebih cantik Jika anda tidak boleh menerimanya, anda mungkin perlu menulis.
Kerana rekursi anda tidak mempunyai syarat penamatan
Kesilapannya ialah tiada anak apabila yang pertama dilaporkan