js数组的去重与降维

//  降维

$(document).ready(function(){
    var shapes = [
        [
            [[0, 4], [0, 5], [1, 4], [1, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [0, 6]],
            [[0, 4], [1, 4], [2, 4], [3, 4]]
        ],
        [
            [[0, 4], [1, 4], [1, 5], [2, 5]],
            [[0, 4], [0, 5], [1, 3], [1, 4]]
        ],
        [
            [[0, 5], [1, 4], [1, 5], [2, 4]],
            [[0, 3], [0, 4], [1, 4], [1, 5]]
        ],
        [
            [[0, 4], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [1, 4], [1, 5], [2, 4]],
            [[0, 3], [0, 4], [0, 5], [1, 4]],
            [[0, 5], [1, 4], [1, 5], [2, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [1, 3]],
            [[0, 4], [0, 5], [1, 5], [2, 5]],
            [[0, 5], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [1, 4], [2, 4], [2, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [1, 5]],
            [[0, 5], [1, 5], [2, 4], [2, 5]],
            [[0, 3], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [0, 5], [1, 4], [2, 4]]
        ]
    ];

    var shapes = [
        [
            [[0, 4], [0, 5], [1, 4], [1, 5],[0, 4], [0, 5], [1, 4], [1, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [0, 6],[0, 3], [0, 4], [0, 5], [0, 6]],
            [[0, 4], [1, 4], [2, 4], [3, 4],[0, 4], [1, 4], [2, 4], [3, 4]]
        ],
        [
            [[0, 4], [1, 4], [1, 5], [2, 5],[0, 4], [1, 4], [1, 5], [2, 5]],
            [[0, 4], [0, 5], [1, 3], [1, 4],[0, 4], [0, 5], [1, 3], [1, 4]]
        ],
        [
            [[0, 5], [1, 4], [1, 5], [2, 4],[0, 5], [1, 4], [1, 5], [2, 4]],
            [[0, 3], [0, 4], [1, 4], [1, 5],[0, 3], [0, 4], [1, 4], [1, 5]]
        ],
        [
            [[0, 4], [1, 3], [1, 4], [1, 5],[0, 4], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [1, 4], [1, 5], [2, 4],[0, 4], [1, 4], [1, 5], [2, 4]],
            [[0, 3], [0, 4], [0, 5], [1, 4],[0, 3], [0, 4], [0, 5], [1, 4]],
            [[0, 5], [1, 4], [1, 5], [2, 5],[0, 5], [1, 4], [1, 5], [2, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [1, 3],[0, 3], [0, 4], [0, 5], [1, 3]],
            [[0, 4], [0, 5], [1, 5], [2, 5],[0, 4], [0, 5], [1, 5], [2, 5]],
            [[0, 5], [1, 3], [1, 4], [1, 5],[0, 5], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [1, 4], [2, 4], [2, 5],[0, 4], [1, 4], [2, 4], [2, 5]]
        ],
        [
            [[0, 3], [0, 4], [0, 5], [1, 5],[0, 3], [0, 4], [0, 5], [1, 5]],
            [[0, 5], [1, 5], [2, 4], [2, 5],[0, 5], [1, 5], [2, 4], [2, 5]],
            [[0, 3], [1, 3], [1, 4], [1, 5],[0, 3], [1, 3], [1, 4], [1, 5]],
            [[0, 4], [0, 5], [1, 4], [2, 4],[0, 4], [0, 5], [1, 4], [2, 4]]
        ]
    ];

    Array.prototype.dr = function(){
        var that = this; // 不能给this赋值
        for (var i = 0; i < that.length; i++) {
            if(that[i] instanceof Array){
                that = that.slice(0, i).concat(that[i], that.slice(i+1));
                i--;
            }
        }
        return that;
    };

    console.log(shapes.dr());

    console.log((function(list) {
        var shape = list.shift();
        return list.length === 0 ? shape : $.merge(shape, arguments.callee(list));
    })($.extend(true, [], shapes)));
});

// 去重
Array.prototype.unique = function(){
var res = [], json = {}, i = 0, len = this.length;
for(; i < len; i++) {
if(!json[this[i]]) {
res.push(this[i]);
json[this[i]] = 1;
}
}

return res;
};

源自:http://yanzhihong23.iteye.com/blog/2042805

时间: 2024-10-12 11:51:11

js数组的去重与降维的相关文章

js 数组&amp;字符串 去重

Array.prototype.unique1 = function() { var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 { //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(this[i]) == -1) n.push(this[i]); } return n; } Array.prototype.unique2 = funct

js数组快速排序/去重

数组的排序 var arr = []; for(var i=0;i<20;i++){      arr.push(Math.floor(Math.random()*100))  }  //生成一个无序的arr数组  function sort(arr,start,end){      //数组长度为1      if(start == end ){          return [arr[start]]      }else if(start == end-1){          //数组长

js 数组深度去重

在日常开发中难免会遇到数组去重的难题,最近,正是给一个数组去重的难题难到了.作为开发者的我们,一旦遇到问题必然就是谷歌,百度,MDN....搜索一波,但是,这些地方都没有找到我想要的答案.或许看到这你会开喷了,咋没有啊,网上一大堆去重方法,但是,这里的需求要的是深度去重,也就是说,引用类型也要去掉!!这时你会发现很多方法都不管用了,看了一波度娘的答案,绝大部分的都是循环,索引相等的方法去重,而且举的例子都是基本数据类型的去重,如果手上拿的是一个全是引用类型的数组,你会发现这些方法都没用了.在讲正

原生JS数组对象去重方法

function uniqueArr(arr){ var hash = []; for(var i=0;i<arr.length;i++){ var flag = true; for(var j=0;j<hash.length;j++){ if(arr[i].ids == hash[j].ids){ flag = false; } } if(flag){ hash.push(arr[i]); } } return hash; } 传入有重复对象的一个数组arr,使用对象中唯一标识ids区分对象

Js 数组返回去重后的数据

function removeRepeat(data) { var temp = ""; var mainData = []; for (var i = 0; i < data.length; i++) { if (!data[i].parent) { temp = data[i]; for (var j = 0; j < data.length; j++) { if (temp.DeliveryType == data[j].DeliveryType) { data[j]

js数组合并去重

var a = [1, 2, 3], b = [101, 2, 1, 10]; var c = a.concat(b.filter(function (item) { return a.indexOf(item) < 0; }));

JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理

壹 ? 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但我觉得大家至少应该掌握一种,这样在面试能解决大部分数组问题.在了解实现思路后,日常开发中结合实际场景优化实现,提升性能也是后期该考虑的. 本文主要围绕数组去重.数组排序.数组降维.数组合并.数组过滤.数组求差集,并集,交集,数组是否包含某项等知识点展开,附带部分知识拓展,在看实现代码前也建议大家先自

js数组去重的方法

1.如果不借助任何方法,初级写法应该是: function unique(arr){ var res=[]; for(var i=0,len=arr.length;i<len;i++){ var obj = arr[i]; for(var j=0,jlen = res.length;j<jlen;j++){ if(res[j]===obj) break; } if(jlen===j)res.push(obj); } return res; } var arr=[1,1,'2','1',3,4]

js 数组去重(数组元素是对象的情况)

js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致所有元素都相等,这时判断方法不再有意义.一般最后数组就只剩一个 2.如果是直接比较法,则因为对象在内存中是按引用访问的,属性值相同的对象也不会相等,简单的直接判断不再有意义.一般最后数组还是原样 所以就需要进行值的比较 当然了,也可以换着法来将相应对象转为字符串(不是默认的那种[object Obj