IT杂谈Web前端之路Web 前端开发

笛卡尔积

2017-03-15  本文已影响532人  ForsonLim

之前写一个SKU的插件,用到了【笛卡尔积】,明白其原理,但是就是写不出来

看来功力尚浅,需要努力

后来借鉴了网上的代码,还是把插件写出来了。就是【笛卡尔积】的代码实现看的不是很很懂,这里将代码贴出来,如果懂的朋友帮忙解释一下:

        function cartesian(elements) {
            if (!Array.isArray(elements))
                throw new TypeError();
            var end = elements.length - 1,
                result = []; 
            function addTo(curr, start) {
                var first = elements[start],
                    last = (start === end);
                for (var i = 0; i < first.length; ++i) {
                    var copy = curr.slice();
                    copy.push(first[i]);
                    if (last) {
                        result.push(copy);
                    } else {
                        addTo(copy, start + 1);
                    }
                }
            }

            if (elements.length)
                addTo([], 0);
            else
                result.push([]);
            return result;
        }

运行结果

由于该代码的作者没有做出详细的说明,我也看的不是很明白,所以请高手赐教。
如果需要在下的sku插件代码,可以这边拿GITHUB-LINFUSHAN
里面有两个,实现的方式也是不同,一个是网上查的,index02则是自己写的。
还是那句话,有看懂上面代码的高手,还是不吝赐教。。。

上一篇下一篇

猜你喜欢

热点阅读