玩玩 写N个数组交集,各种想法,四不像,记录下生活,草稿

215 阅读1分钟
  //都得判断数组 or 转数组。
    // 可用一个零时数组转接交叉集合,在给setA。
    // 两个字典转接
    // 累计计数,每个元素频次 
      //循环的优化。。。。记录A,B len
    Array.intersect = function () {
        var args = Array.prototype.slice.call(arguments);
        var setA = args[0] ? args[0] : [];
        var setB = args[1] ? args[1] : [];
        var dict = Object.create(null);
        var count = 1;
        return function intersection() {
            var args = Array.prototype.slice.call(arguments);


            if (args.length === 2) {
                setA = args[0]
                setB = args[1]
                count = 2;
            }
            if (args.length === 1) {
                setB = args[0]
                count++;
            }
            var len = setA.length > setB.length ? setA.length : setB.length;

            for (var i = 0; i < len; i++) {
                if (i < setA.length) {
                    if (!dict[setA[i]]) {
                        dict[setA[i]] = 1;
                    } else {
                        dict[setA[i]]++;
                    }
                }
                if (i < setB.length) {
                    if (!dict[setB[i]]) {
                        dict[setB[i]] = 1;
                    } else {
                        dict[setB[i]]++;
                    }
                }
            }
            var arr = [];
            for (var key in dict) {
                object[key] === count && arr.push(key * 1)
                /* ... */
            }
            Array.intersect.res = setA = arr;
            // Array.intersect.res = setA = Object.keys(dict);
            return intersection;
        }
    }