JS中判断数组是否包含相同内容,每个子元素内容相同,顺序不同也算相同

可以使用es7数组新增的includes方法。遍历数组a, 然后看数组b是否includes。

数组实例的includes


functionisEquals(a, b){returnJSON.stringify(a.sort()) ===JSON.stringify(b.sort());}

改进算法

缺陷:比较数组的时候必须按顺序相等,因为数级里的 object 没法排序

constcompare =(() =>{functioncompareArray(a, b){console.log("array", a, b);if(a.length !== b.length) {returnfalse;        }constlength = a.length;for(leti =0; i < length; i++) {if(!compare(a[i], b[i])) {returnfalse;            }        }returntrue;    }functioncompareObject(a, b){console.log("object", a, b);constkeya =Object.keys(a);constkeyb =Object.keys(b);if(keya.length !== keyb.length) {returnfalse;        }returnkeya.every(key=>{if(!compare(a[key], b[key])) {returnfalse;            }returntrue;        });    }functioncompare(a, b){if(a === b) {returntrue;        }if(typeofa !==typeofb || a ===null|| b ===null) {returnfalse;        }if(Array.isArray(a)) {if(!Array.isArray(b)) {returnfalse;            }returncompareArray(a, b);        }if(typeofa ==="object") {returncompareObject(a, b);        }console.log("value", a, b);returnfalse;    }returncompare;})();varaa = [{Name:"YuanXP",Id:9}, {Name:"YuanX",Id:9}];varbb = [{Name:"YuanXP",Id:9}, {Id:9,Name:"YuanX"}];varcc = [{Name:"YuanXP",Id:19}, {Id:9,Name:"YuanX"}];console.log(compare(aa, bb));console.log(compare(aa, cc));


function isEquals(a, b) {

let_a= a.sort();let_b= b.sort();return JSON.stringify(_a) === JSON.stringify(_b);

}

你好,貌似compare缺少typeof相等 值不等时候的判断

var aa = [{Name:"YuanXP",Id:[9] }, {Name:"YuanX",Id:9}];var bb = [{Name:"YuanXP",Id:[10]}, {Id:9,Name:"YuanX"}];


http://underscorejs.org/#differencedifference_.difference(array, *others)Similar to without, but returns thevaluesfromarraythat arenotpresentinthe otherarrays._.difference([1,2,3,4,5], [5,2,10]);=> [1,3,4]if(_.difference(arr1, arr2).length==0&&_.difference(arr2, arr1).length==0) {  //两个数组相同, 数组元素有obj之类的不知行不行}



连接两个数组,用hash判断重复


https://github.com/hanzichi/u... 不知道有没有帮助


来源https://segmentfault.com/q/1010000006845104?_ea=1150060

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容