1.2つの配列が「等しい」かどうかを判断する2.2つの配列の交差と差セットを取る

1909 ワード

SetはES 6種の新規データ構造で、配列と似ていますが、そのメンバーの値は全部唯一です.
1.2つの配列の交差と差セットを取る
var a = [1,2,3,4];
var b = [3,4,5,6];

var set1 = new Set([...a,...b]);
var set2 = new Set(a.filter((item)=>{
    return b.indexOf(item) > -1
}));
var set3 = new Set(a.filter((item)=>{
    return b.indexOf(item) == -1
}))
console.log('  :',set1);//Set{1,2,3,4,5,6}
console.log('  :',set2);//Set{3,4}
console.log('  :',set3);//Set{1,2}
2.2つの配列が「等しい」かどうかを判断する.
二つの方法があります
  • JSON.strigify()
  •  var a = ['1',2];
     var b = [1,2];
     console.log(JSON.stringify(a));//['1',2]
     console.log(JSON.stringify(b));//[1,2]
     console.log(JSON.stringify(a) == JSON.stringify(b));//false
  • JSON.strigifyを使用してはいけない場合
  •    Array.prototype.equals = function (arr) {
            if (!arr)
                return false;
            if (this.length != arr.length)
                return false;
            for (var i = 0, l = this.length; i < l; i++) {
                if (Array.isArray(this[i]) && Array.isArray(arr[i])) {
                    this[i].equals(arr[i]);
                } 
                //else if(Object.prototype.toString.call(this[i])==='[object Object]' && Object.prototype.toString.call(arr[i])==='[object Object]') {
                //          ,        "  "   ,               
                //}
                else {
                    // console.log(this[i]);
                    // console.log(arr[i]);
                   if(this[i]!=arr[i]){
                       return false;
                   }
                }
            }
            return true;
        }
    X.toString()を使わないように注意してください.
     var a = ['1',2];
     var b = [1,2];
     console.log(a.toString());//1,2
     console.log(b.toString());//1,2
     console.log(a.toString() == b.toString());//true
    文字列に変換すると、文字列'1'と数字1が等しくなります.
    WeChat公式アカウント:
    フロントエンド実習日記