reduce
array.reduce(function(total, currentValue, currentIndex, arr), initialValue);
示例
var str = "{{name}}很厉害,才{{info.age}}岁,他才华横溢,这是第{{info.ll.cc}}首歌了。";
var obj = {name: '周杰伦', info: { age: 30, ll: { cc: '337' } }};
var lableO = [];
var deep = 0;
function replaceFn(objInit) {
for(let key in objInit) {
lableO.push(key);
if (objInit[key] instanceof Object) {
deep++;
replaceFn(objInit[key]);
} else {
str = str.replace(/[\{,\}]/g, "").replace(lableO.join('.'), objInit[key]);
lableO = lableO.slice(0, deep);
}
}
};
replaceFn(obj);
console.log(str);
str.replace(/\{\{(.*?)\}\}/g, (m, $1) => $1.split('.').reduce((acc, current) => acc[current], obj));