jsの中で配列が重いいくつかの実現方法(違い)


1.ES 6を利用したset方法(常用)の説明:
  • set:SetはES 6の新しいデータ構造で、配列と似ていますが、自身に重複値がありません.
  • 展開演算子(…):展開setは、行列
  • に変換される.
  • Aray.from:Aray.fromは、2つの種類のオブジェクトを本物の配列に変換するために使用できます.オブジェクトを巡回できます.
    短所:配列中の空のオブジェクトは削除できません.
    let ary = [12, 23, 12, 15, 25, 23, 25, 14, 16];
    ary = [...new Set(ary)];
    console.log(ary);
    
    let ary = [12, 23, 12, 15, 25, 23, 25, 14, 16];
    ary = Array.from(new Set(ary));
    console.log(ary);
    
    2.その他の方法
    // 1,2,3,'a','2',null,NaN,undefined,{a:1},true 10 
            var arr = [3,'a', 1, 2, 2, 3, '2', 3, null, NaN, null, NaN, undefined, {size:1}, undefined, true, {size:1}, true];
            //    :  splice    
            //   :   for    ,               ,            
            function newArr(arr) {
                for(var i=0; i<arr.length; i++) {
                    for(var j=i+1; j<arr.length; j++) {
                        if(arr[i] == arr[j]) {
                            arr.splice(j,1);
                            j--;
                        }
                    }
                }
                return arr;
            }
            console.log(newArr(arr)); 
    
            // 0: 3
            // 1: "a"
            // 2: 1
            // 3: 2
            // 4: null
            // 5: NaN
            // 6: NaN
            // 7: {size: 1}
            // 8: {size: 1}
            // length: 9
    
            //   :underfined ,true
            //     : NaN, {size:1} ,2   '2'
    
            //    :indexOf
            //   :       ,       indexOf             ,    -1,     push     
            function newArr2(arr) {
                var result =[];
                for(var i=0; i<arr.length; i++) {
                    if(result.indexOf(arr[i]) == -1) {
                        result.push(arr[i])
                    }
                }
                return result;
            }
            console.log(newArr2(arr))
    
            // 0: 3
            // 1: "a"
            // 2: 1
            // 3: 2
            // 4: "2"
            // 5: null
            // 6: NaN
            // 7: NaN
            // 8: undefined
            // 9: {size: 1}
            // 10: true
            // 11: {size: 1}
            // length: 12
    
            //   :  
            //     : NaN, {size:1}
    
            //    :Set   Array.from
            //   :Set ES6      ,     ,        ,Array.from                :      ,     
            function newArr3(arr) {
                return Array.from(new Set(arr));
            }
            console.log(newArr3(arr))
    
            // 0: 3
            // 1: "a"
            // 2: 1
            // 3: 2
            // 4: "2"
            // 5: null
            // 6: NaN
            // 7: undefined
            // 8: {size: 1}
            // 9: true
            // 10: {size: 1}
            // 11: {}
            // 12: {}
            // length: 13
    
            //   : 
            //     : {size:1} ,{}
    
    
            //    :      Set
            //   :  ...         
            var newArr4 = [...new Set(arr)];
            console.log(newArr4);
    
            // 0: 3
            // 1: "a"
            // 2: 1
            // 3: 2
            // 4: "2"
            // 5: null
            // 6: NaN
            // 7: undefined
            // 8: {size: 1}
            // 9: true
            // 10: {size: 1}
            // length: 11
            
            //   :  
            //     : {a:1}
    
            //    :        
            //   :         ,            ,     、
            Array.prototype.unique = function(){
                var temp = {};
                var newArr = [];
                for(var i=0; i < this.length; i++) {
                    if(!temp.hasOwnProperty(this[i])) {
                        temp[this[i]] = this[i];
                        newArr.push(this[i])
                    }
                }
                return newArr;
            }
            console.log(arr.unique());
    
            // 0: 3
            // 1: "a"
            // 2: 1
            // 3: 2
            // 4: null
            // 5: NaN
            // 6: undefined
            // 7: {size: 1}
            // 8: true
            // length: 9
    
            //     : 
            //     : '2'   2
            //     
    
            //    : sort  
            //   :        ; 
            //   sort                temp ,  temp  0   1,   for          ,       
            function newArr5(arr) {
                if(!Array.isArray(arr)) {
                    console.log('type error!')
                    return;
                }
                temp = arr.sort();
                var result = [temp[0]];
                for(var i =1; i<arr.length; i++) {
                    if(temp[i] !== temp[i-1]) {
                        result.push(temp[i]);
                    }
                }
                return result;
            }
            console.log(newArr5(arr));
    
            // 0: 1
            // 1: 2
            // 2: "2"
            // 3: 3
            // 4: NaN
            // 5: NaN
            // 6: {size: 1}
            // 7: {size: 1}
            // 8: "a"
            // 9: null
            // 10: true
            // 11: undefined
            // length: 12
    
            //     : 
            //     : NaN , {size:1}