首先,js不能直接用= = =或者==判断两个数组是否相等!
why?
因为= = =或者= =对于数组和对象等引用数据来说,判断相等不是比较值是否相等,而是比较两个引用数据的引用地址是否相等,显然两个数组的引用地址不同,则必然不能直接= = =或者==判断!
那么应该怎么做?
- toString()
[1,2,3].toString() === [1, 2, 3].toString(); // true
- join()
[1,2,3,'4'].join() === [1,2,3, 4].join(); // true
- JSON.stringfy()
JSON.stringify([{name:'许善祥'},{sex:'男'}]) == JSON.stringify([{name:'许善祥'},{sex:'男'}]); // true
- sort()
如果数组元素顺序不同先排序再比较;
var a = ['1', '3', '2'];
var b = ['3', '1', '2'];
a.sort().toString() === b.sort().toString();
- filter
a.filter(t => !b.includes(t))