28.数组的去重与拷贝

1. 数组去重

  • 思路:通过indexOf()方法判断数组中是否有这一项,如果没有就放到新创建的数组中
var arr = [1,1,2,2,3,3];
        Array.prototype.norepeat = function() {
            var result = [];
            for(var i = 0; i < this.length; i++) {
                if(result.indexOf(this[i]) == -1) {
                    result.push(this[i])
                }
            }
            return result;
        }
        arr.norepeat() //[1,2,3]

2. 数组的拷贝

  • 浅拷贝很简单就不记录了,只记录一下深拷贝,思路,判断数组每一项的数据类型。
var arr1 = [1,2,[3,4]]
        function deepCopy(arr, result) {
            var result = result || [];
            for(var i = 0; i < arr.length; i++) {
                if(arr[i] instanceof Array) {
                    result[i] = [];
                    deepCopy(arr[i], result[i])
                }else {
                    result.push(arr[i])
                }
                
            }
            return result;
        }
        var arr2 = deepCopy(arr1)
        arr2[2].push(5) // [1,2,[3,4,5]]
        arr1 // [1,2,[3,4]]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。