我想减少这个嵌套数组:
const list = ['Map<%s,%s>', ['string', 'Map<%s,%s>', ['string', 'boolean']]];
这样该列表就变成:
'Map<string,Map<string,boolean>>'
这是一个开始,但递归对我来说真的很困惑:
const util = require('util');
const reduceToString = function(l){
return l.reduceRight((a,b) => {
if(Array.isArray(a)){
return reduceToString(a);
}
return util.format(b, a);
});
};
console.log(reduce(list));
为了更好地理解一般需要如何工作,此输入:
const list = ['Map<%s,%s,%s>', ['string', 'Map<%s,%s>', ['string', 'boolean'], 'number']];
应该产生:
'Map<string,Map<string,boolean>,number>'
The 一般规则is:字符串右侧的任何数组都应插入字符串中,并且 reduceToString 函数应始终返回字符串。