
任意文字列の中から、{{key}}という文字列を、{key:val}で置換する処理
ソースコード : Source
function double_bracket(str , data){
if(data){
const reg = new RegExp('{{(.*?)}}','g')
const arr = []
let res = []
while ((res = reg.exec(str)) !== null) {
arr.push(res[1])
}
for(let key of arr){
const val = typeof data[key] !== 'undefined' ? data[key] : ''
str = str.split('{{'+ String(key) +'}}').join(val)
}
}
return str
}
デモ : Demo
double_bracket('{{a}},{{b}},{{c}},{{d}}' , {a:1,b:null,c:'number-3'})
'1,null,number-3,'
解説 : Comment
文字列に{{@}}(@は連想配列データのkey値)を書いておくと、第2受け渡し値の連想配列データの内容で置き換えてくれます。
ちなみに、存在しないkey値は、全てblank文字列に置き換えられます。({{@}}は削除されます。)
テンプレートデータを任意のモデルデータで置き換える時に使えるので、リスト項目のliタグや、テーブル項目のtrなどを、テンプレートで保持しておくことで便利にシステム表示で使うことができます。