var a = ['hello',{hello: '323651',bye: '43434'},[1,2,34],true,10,9,8,10,'true','hello',true,false,9,{hello: '312312',ok: 32323},[1,2,34]];
var a = ['hello',{hello: '323651',bye: '43434'},[1,2,34],true,10,9,8,10,'true','hello',true,false,9,{hello: '312312',ok: 32323},[1,2,34]];
对象vs对象 和 数组vs数组 递归处理,其它情况直接比较。
直接 ===
判断,相等则完事。
不相等的情况,如果是 对象vs对象 或者 数组vs数组 再 JSON stringify 对比,其它的完事。
如果对象顺序顺序或者内部数组元素时有序数组的话就元素转字符串后比较.
var arr1 =[...],arr2=[....],arr3=[];
var rst = [];
var process = function(arr){
arr.forEach(funciton(v,i){
var v2s;
if(v.constructor === Object){
v2s = JSON.stringify(v);
} else if( v.constructor === Boolean){
v2s = "'"+v.toString()+"'"
} else {
v2s = v.toString();
}
if (arr3.indexOf(v2s)<0){
arr3.push(v2s);
rst.push(v);
}
})
}
process(arr1);
process(arr2);
console.log(rst);
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
5 回答7.1k 阅读✓ 已解决
数字,布尔型等直接在后面加判断就好,加在一起也行,我这么写你看着更明白。