群里的知识

2020-03-18  本文已影响0人  泡泡牛momo

提问

[['a', 'b'], ['c'], ['d', 'e']]

得到

['a,c,d', 'a,c,e', 'b,c,d', 'b,c,e']

[['aa', 'bb'], ['cc', 'dd', 'ee'], ['ff']]

得到

['aa,cc,ff', 'aa,dd,ff', 'aa, ee, ff', 'bb,cc,ff', 'bb,dd,ff', 'bb,ee,ff']

解答

var testArray = [['aa', 'bb'], ['cc', 'dd', 'ee'], ['ff']];

var rememberArray = [];

var resultArray = [];

/**

* 递归处理数据

* @param targetIndex testArray的下标

* @param str 当前已经拼好的前缀

*/

function recursionData(targetIndex, str) {

var currArray = testArray[targetIndex];

if (!rememberArray[targetIndex]) {

rememberArray[targetIndex] = 0;

}

var forIndex = rememberArray[targetIndex];

if (targetIndex === testArray.length - 1) {

for(var i = 0; i < currArray.length; i++) {

resultArray.push(str + "," + currArray[i]);

}

recursionData(targetIndex - 1, str.substring(0, str.lastIndexOf(",")));

} else if (forIndex > currArray.length - 1 && targetIndex !== 0) {

rememberArray[targetIndex] = 0;

recursionData(targetIndex - 1, targetIndex === 1 ? "" : str.substring(0, str.lastIndexOf(",")));

} else {

var newStr = (str ? ( str + ",") : "") + currArray[forIndex];

if (targetIndex === 0 && forIndex > currArray.length - 1) {

//结束

} else {

rememberArray[targetIndex] = rememberArray[targetIndex] + 1;

recursionData(targetIndex + 1,  newStr);

}

}

}

//开始

recursionData(0, "");

console.log(resultArray);

上一篇 下一篇

猜你喜欢

热点阅读