慕粉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是一個存儲姓名的數(shù)組,如["范冰冰","鄧超","王寶強","李健"]
主要是最后一句看不懂。
return?val?===?'{name}'???names.shift()?:?names.length;
“===”不是只能return?ture或false嗎?那怎么實現(xiàn)字符串的替換?
求幫忙寫下注釋,謝謝!
3 回答
已采納

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


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