慕粉4031128
2017-05-04 19:27:01
function?likes?(names)?{??
????var?templates?=?[???
?????????'no?one?likes?this',????
?????????'{name}?likes?this',???
?????????'{name}?and?{name}?like?this',???
?????????'{name},?{name}?and?{name}?like?this',????
?????????'{name},?{name}?and?{n}?others?like?this'
????];??
????var?idx?=?Math.min(names.length,?4);??
????return?templates[idx].replace(/{name}|{n}/g,?function?(val)?{????
????????return?val?===?'{name}'???names.shift()?:?names.length;
??});
}
-----------------------------------------------------------------------------
備注:names是一個(gè)存儲(chǔ)姓名的數(shù)組,如["范冰冰","鄧超","王寶強(qiáng)","李健"]
主要是最后一句看不懂。
return?val?===?'{name}'???names.shift()?:?names.length;
“===”不是只能return?ture或false嗎?那怎么實(shí)現(xiàn)字符串的替換?
求幫忙寫下注釋,謝謝!
3 回答
已采納

西蘭花偉大炮
TA貢獻(xiàn)376條經(jīng)驗(yàn) 獲得超318個(gè)贊
因?yàn)檫@里只匹配{name}跟{n},如果是{name},還是會(huì)返回true,然后就會(huì)移除數(shù)組第一個(gè)元素,并且返回這個(gè)元素,這個(gè)元素就替換到templates里面的{name},而當(dāng)匹配到{n}時(shí),則是false,就會(huì)返回當(dāng)前數(shù)組的長(zhǎng)度,也就替換到{n}的位置,因?yàn)槠ヅ鋘ame的都被移除了,length也就是剩下元素的長(zhǎng)度。歡迎明天采納


洋蔥_dot
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
return?val?===?'{name}'???names.shift()?:?names.length;這個(gè)的名字我忘了,好像叫三聯(lián)表達(dá)式吧!
意思是:'{name}'是條件,如果成立就是true返回names.shift(),如果是false就返回names.length
另外多說(shuō)一句:===是全等于,不僅要數(shù)值相等,type類型也要相等
添加回答
舉報(bào)
0/150
提交
取消