JSベース4(配列デマルチプレクシングと統計要素の個数)


JS配列の重量除去と統計要素の個数
  • 配列脱重
  • 統計配列の各要素の個数
  • はいれつデポジット
  • splice()法と二層サイクルを用いて繰り返し元素
  • を除去する.
    splice()メソッドは、元の配列の一部のメンバーを削除し、削除した場所に新しい配列メンバーを追加し、値が削除された要素であることを返します.
    例:
                let a = [2, 4, 1, 2, 4, 5, 9, 5];
                function b(a) {
                    for (let i = 0; i < a.length; i++) {
                        for (let j = i + 1; j < a.length; j++) {
                            if (a[i] === a[j]) {
                                a.splice(j,1)
                                //j--;
                            }
                        }
                    }
                }
                b(a)
                console.log(a); //[2, 4, 1, 5, 9]
    
  • indexOf()法を用いて重複する元素
  • を除去する.
    indexOfメソッドは、所与の要素が配列内で初めて現れる位置を返し、結果がマッチングの開始位置であることを返します.表示されない場合は-1を返します.
    例:
            var arr = [2, 4, 1, 2, 4, 5, 9, 5];
            var newArr = [];
            for (var i = 0, len = arr.length; i < len; i++) {
                if (newArr.indexOf(arr[i]) == -1) {
                    newArr.push(arr[i]);
                }
            }
            console.log(newArr);//[2, 4, 1, 5, 9]
    
  • setとArrayを使用する.from()メソッド重複する要素を除去する
  • Array.fromメソッドは、Set構造を配列に変換できます.
    例:
            var arr = [2, 4, 1, 2, 4, 5, 9, 5];
            var newArr = Array.from(new Set(arr));
            console.log(newArr);//[2, 4, 1, 5, 9]
    
  • オブジェクトの属性が同じではない特徴を利用して重み付けを行う例:
  • var a = [2, 4, 1, 2, 4, 5, 9, 5];
            var newArr = [];
            var o = {}; 
            for (let i = 0; i < a.length; i++) {
                var t = a[i];
                if(o[t]){  //        
        
                }else{
                    newArr.push(a[i]);
                    o[t] = true;
                }
            }
            console.log(newArr)//[2, 4, 1, 5, 9]
    
  • オブジェクトの属性が同じではない特徴を利用して重み付けを行う例:
  •         Array.prototype.distinct = function () {
                var arr = this,
                    i,
                    obj = {},
                    result = [],
                    len = arr.length;
                for (i = 0; i < arr.length; i++) {
                    if (!obj[arr[i]]) { //      ,         
                        obj[arr[i]] = 1;
                        result.push(arr[i]);
                    }
                }
                return result;
            };
            var a = [2, 4, 1, 2, 4, 5, 9, 5];
            var b = a.distinct();
            console.log(b.toString()); //2,4,1,5,9
    
  • 配列再帰脱重
  • 再帰的な思想を運用して先に並べ替えて、それから最後から比較して、同じに出会って、削除します
    例:
            Array.prototype.distinct = function () {
                var arr = this,
                    len = arr.length;
                arr.sort(function (a, b) { //             
                    return a - b;
                })
                function loop(index) {
                    if (index >= 1) {
                        if (arr[index] === arr[index - 1]) {
                            arr.splice(index, 1);
                        }
                        loop(index - 1); //  loop      
                    }
                }
                loop(len - 1);
                return arr;
            };
            var a = [2, 4, 1, 2, 4, 5, 9, 5];
            var b = a.distinct();
            console.log(b.toString()); //1,2,4,5,9
    

    統計配列内の各要素の個数

  •  var a = [1,1,2,3,4,5,5,6];
            function f(a) {
                var obj = {};
                for (let i = 0; i < a.length; i++) {
                    var t = a[i];
                    if (obj.hasOwnProperty(t)){
                        obj[t] = obj[t]+1;
                    }else{
                        obj[t] = 1;
                    }
                }
                return obj;
            }
            console.log(f(a));//{1: 1, 2: 2, 4: 2, 5: 2, 9: 1}
    

  •         var n = [2, 4, 1, 2, 4, 5, 9, 5];
            var m = {}
            for (var i = 0; i < n.length; i++) {
                var v = n[i];
                var counts = m[v];
                if (counts) {
                    m[v] += 1;
                } else {
                    m[v] = 1;
                }
            }
            console.log(m)//{1: 1, 2: 2, 4: 2, 5: 2, 9: 1}
    

    まとめ
    以上はJavaScript配列の重さ除去と配列内の各要素の出現回数を統計するいくつかの方法についてであり,不足点は後日改善される.