Rumah > Soal Jawab > teks badan
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)
过去多啦不再A梦2017-05-16 13:34:36
Sebabnya ialah setiap atribut obj yang digunakan untuk penghakiman telah dikira sekali, dan sekatan bersyarat boleh ditambah untuk memperbaikinya:
var convert = function(obj) {
return obj.map(o => ({
'number': o.type === 'number ' && 1,
'string': o.type === 'string ' && 's',
'array': o.type === 'array ' && convert(o.children)
}[o.type]))
}
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.
習慣沉默2017-05-16 13:34:36
Kesilapannya ialah tiada anak apabila yang pertama dilaporkan
var convert = function(obj) {
return obj.map(o => ({
'number': 1,
'string': 's',
'array': o.children?convert(o.children):""//假设没有的时候返回空咯
}[o.type]))
}