午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

javascript - 兩種遞歸的寫法,第一種為何報錯?

瀏覽:183日期:2023-09-20 14:49:16

問題描述

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)

問題解答

回答1:

原因是判斷用的 obj 的每個屬性都被計算了一次,可以加條件阻塞改進:

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]))}

當要判斷的條件少的時候可以用多個三目條件判斷,太多這樣的判斷,這種寫法要美觀一點,接受不了的可能只能寫 if else 了。

回答2:

因為你的遞歸沒有終止條件

回答3:

報錯是第一個的時候沒有children

var convert = function(obj) { return obj.map(o => ({ ’number’: 1, ’string’: ’s’, ’array’: o.children?convert(o.children):''//假設沒有的時候返回空咯 }[o.type]))}

標簽: JavaScript
主站蜘蛛池模板: 欧美激情bbw | 每日av在线 | 狠狠干狠狠艹 | 97人人爱 | 国产黄色免费在线观看 | 看av在线 | 94久久 | 亚洲国产精品18久久久久久 | 少妇超碰| 综合色av | 久久影视中文字幕 | 激情综合文学 | 亚洲免费精品 | 成人亚洲网站 | 天天干天天透 | 69国产| 成人自拍一区 | 神马午夜激情 | 国产91免费看 | 少妇高潮露脸国语对白 | 久久特级毛片 | 在线精品亚洲欧美日韩国产 | 视频一区国产精品 | 毛片啪啪 | 日本va欧美va欧美va精品 | 浪潮av| 影音先锋三级 | 成人看片黄a免费看视频 | 久久精品偷拍视频 | 国产高清一区二区三区四区 | 亚洲精品网址 | 国产h视频| 日韩三级国产 | 国产精品乱码一区二区视频 | 在线视频国产一区 | 午夜爽爽爽男女免费观看 | 日韩毛片一区 | 成人免费一区 | 天天爱天天操 | 另类视频一区 | 91香蕉国产在线观看软件 |