将dubarr如何拆分为如下
即将dubarr中的数组根据arr中的数组拆分出新的nedubwarr
//不知道理解的对不对
var arr = [ [ 2, 3 ], [ 7, 8 ] ];
var dubarr = [ [ 0, 1, 2, 3, 4, 5 ], [ 7, 8, 9 ]];
function testData(arr,dubarr) {
var nedubwarr = [];
var t = [];
var m = [];
dubarr.forEach((item,index)=>{
nedubwarr = nedubwarr.concat(item);
});
nedubwarr.forEach((item,index)=>{
m.push(item);
if(index%arr[0].length){
t.push(m.slice());
m = [];
}
});
(nedubwarr.length % arr[0].length !== 0) && t.push(m);
return t;
}
console.log(testData(arr,dubarr));
Hmmmmm....这个很麻烦啊,而且有些需求不是很明确
我可以先提供一个helper function:
function cutArr(arr, cutter) {
var cutter = cutter.join();
return arr.join()
.split(cutter)
.join('#' + cutter + '#')
.split('#')
.filter(ele => ele !== "")
.map(ele => ele.split(",").filter(el => el !== ""));
}
console.log(cutArr([0,1,2,3,4,5], [2,3]));
这个可以用来把一个数组拆分开来。接下来就不是很明确了,dubarr
和arr
里的元素是一一对应,还是一对多,还是多对多?复杂程度依次递增。
按照问题里的情况(最简单的一对一):
var arr = [[2, 3], [7, 8]];
var dubarr = [[0,1,2,3,4,5], [7,8,9]];
var i = 0;
var newdubarr = dubarr.reduce( (acc, ele) => acc.concat(cutArr(ele, arr[i++])), []);
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
2 回答1.8k 阅读
2 回答1.1k 阅读✓ 已解决