Object.prototype.equals = function (obj) {
for (let propName in this) {
if (obj.hasOwnProperty(propName)) {
if (typeof this[propName] != typeof obj[propName]) {
return false;
}
if (this[propName] instanceof Object) {
return this[propName].equals(obj[propName])
} else if(this[propName] instanceof Array){
return this[propName].equals(obj[propName])
}else{
return this[propName] == obj[propName];
}
} else {
return false;
}
}
};
Array.prototype.equals = function (arr) {
// console.log("数组比对")
if (!(arr instanceof Array)) {
return false;
}
if (this.length != arr.length) {
return false;
}
for (let index =0;index<this.length;index++){
let element = this[index];
// console.log("foreach ",element,arr[index])
if(element instanceof Array){
return element.equals(arr[index])
}
// console.log("foreach typeof",element,arr[index])
if(typeof element != typeof arr[index]){
// console.log("返回 类型不同")
return false;
}
// console.log("foreach instanceof",element,arr[index])
if(element instanceof Object){
return element.equals(arr[index])
}
// console.log("foreach ==",element,arr[index])
if(element != arr[index]){
return false;
}
}
};
function quchong(arr){
let output = [];
for(let i =0;i<arr.length;i++){
let has = false;
for(let j=0;j<output.length;j++){
if(arr[i] instanceof Array && output[j] instanceof Array){
if(output[j].equals(arr[i])){
has = true;
break;
}
}
if(arr[i] instanceof Object && output[j] instanceof Object){
if(output[j].equals(arr[i])){
has = true;
break;
}
}
if(arr[i] === output[j]){
has = true;
break;
}
}
if(!has){
output.push(arr[i]);
}
}
return output;
}
var qss = [123, {a: 1}, {a: {b: 1,a:2}}, {a: "1"}, {a: {a:2,b: 1}}, "meili"];
console.log('1 ------ ',qss);
console.log('2 ------ ',quchong(qss))
var qssd = [123, [1, 2, 3], [1, "2", 3], [1, 2, 3], "meili"];
console.log('1 ------ ',qssd);
console.log('2 ------ ',quchong(qssd))
var qssr = [123, "meili", "123", "mogu", 123]
console.log('1 ------ ',qssr);
console.log('2 ------ ',quchong(qssr))