javascript - 数组遍历拆分
PHP中文网
PHP中文网 2017-04-11 12:40:56
[JavaScript讨论组]


将dubarr如何拆分为如下


即将dubarr中的数组根据arr中的数组拆分出新的nedubwarr

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
巴扎黑
遍历dubarr
    遍历dubarr的item
        遍历arr
            判断item的item是不是等于当前的arr的
            等于 就截断newdubarr新来一个[]
            不等于就把当前的继续放入旧的数组里面
PHPz
//不知道理解的对不对
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));
PHPz

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]));

这个可以用来把一个数组拆分开来。接下来就不是很明确了,dubarrarr里的元素是一一对应,还是一对多,还是多对多?复杂程度依次递增。

按照问题里的情况(最简单的一对一):

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++])), []);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号