[Help]Tạo function nối các array với nhau



  • Chào các bạn, mình đang làm việc với array nhưng dốt toán nên đành chịu.
    Ví dụ mình có 1 mảng 2 chiều như sau:

    var items = [
      ['a', 'b', 'c'], [1,2]
    ]
    

    Giờ mình muốn nối các mảng con thành 1 mảng to có dạng như sau:

    ['a-1', 'a-2', 'b-1', 'b-2', 'c-1', 'c-2']
    

    Với 1 mảng 2 chiều như này mình thủ công viết 2 vòng for nhưng nếu có nhiều mảng con nữa giả dụ như này:

    var items = [
      ['a', 'b', 'c'], [1,2], ['d','e','f'], ... , [w,x,y,z]
    ]
    

    Thì không biết viết for kiểu gì nữa, mong các bạn giúp.



  • function reduceArr() {
        var args = [].slice.call(arguments),
            endP = args.length - 1,
            rarr = [];
    
        function reduceTo(carr, startP) {
            var first = args[startP],
                isLast = (startP === endP);
    
            for (var i = 0; i < first.length; ++i) {
                var sliceItem = carr.slice();
                sliceItem .push(first[i]);
    
                if (isLast) {
                   rarr.push(sliceItem)
                } else {
                    reduceTo(sliceItem, startP + 1)
                }
            }
        }
    
        if (args.length) {
           reduceTo([], 0)
        } else {
            rarr.push([])
        }
        return rarr
    }
    
    reduceArr(  ['a', 'b', 'c'], [1,2], ['d','e','f'], ['w','x','y','z'])
    
    //[["a",1,"d","w"],["a",1,"d","x"],["a",1,"d","y"],["a",1,"d","z"],["a",1,"e","w"],["a",1,"e","x"],["a",1,"e","y"],["a",1,"e","z"],["a",1,"f","w"],["a",1,"f","x"],["a",1,"f","y"],["a",1,"f","z"],["a",2,"d","w"],["a",2,"d","x"],["a",2,"d","y"],["a",2,"d","z"],["a",2,"e","w"],["a",2,"e","x"],["a",2,"e","y"],["a",2,"e","z"],["a",2,"f","w"],["a",2,"f","x"],["a",2,"f","y"],["a",2,"f","z"],["b",1,"d","w"],["b",1,"d","x"],["b",1,"d","y"],["b",1,"d","z"],["b",1,"e","w"],["b",1,"e","x"],["b",1,"e","y"],["b",1,"e","z"],["b",1,"f","w"],["b",1,"f","x"],["b",1,"f","y"],["b",1,"f","z"],["b",2,"d","w"],["b",2,"d","x"],["b",2,"d","y"],["b",2,"d","z"],["b",2,"e","w"],["b",2,"e","x"],["b",2,"e","y"],["b",2,"e","z"],["b",2,"f","w"],["b",2,"f","x"],["b",2,"f","y"],["b",2,"f","z"],["c",1,"d","w"],["c",1,"d","x"],["c",1,"d","y"],["c",1,"d","z"],["c",1,"e","w"],["c",1,"e","x"],["c",1,"e","y"],["c",1,"e","z"],["c",1,"f","w"],["c",1,"f","x"],["c",1,"f","y"],["c",1,"f","z"],["c",2,"d","w"],["c",2,"d","x"],["c",2,"d","y"],["c",2,"d","z"],["c",2,"e","w"],["c",2,"e","x"],["c",2,"e","y"],["c",2,"e","z"],["c",2,"f","w"],["c",2,"f","x"],["c",2,"f","y"],["c",2,"f","z"]]
    
    

Log in to reply