Pour les nombres, les types booléens, etc., ajoutez simplement le jugement directement à la fin, ou additionnez-les ensemble. Vous le comprendrez plus clairement lorsque je l'écrirai de cette façon.
var a = ['{"1":1,"2":2}', {1:1, 2:2}, 'hello',{hello: '323651',bye: '43434'},[1,2,34],true,10,9,8,10,'true','hello',true,false,9,'9',{hello: '312312',ok: 32323},[1,2,34]];
var json = {};
var arr = [];
for (let i = 0, len = a.length; i < len; i++) {
let str = JSON.stringify(a[i]) + typeof a[i];
if (!json[str]) {
arr.push(a[i]);
}
json[str] = 1;
}
console.log(arr);
Objet contre objet et tableau contre tableau sont traités de manière récursive et d'autres situations sont comparées directement.
Directement === jugement, si égalité, c'est fait.
Dans le cas d'inégalité, s'il s'agit d'un objet contre un objet ou d'un tableau contre un tableau, comparez-le avec JSON stringify, et tout le reste sera fait.
Si l'objet est dans un ordre séquentiel ou si les éléments internes du tableau sont des tableaux ordonnés, alors les éléments sont convertis en chaînes et comparés
.
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);
Il est préférable d'utiliser un autre caractère pour séparer les JSON. Si vous ne pouvez le faire que tel quel, utilisez « hello » pour diviser le tableau, puis comparez pour supprimer les doublons.
Pour les nombres, les types booléens, etc., ajoutez simplement le jugement directement à la fin, ou additionnez-les ensemble. Vous le comprendrez plus clairement lorsque je l'écrirai de cette façon.
Objet contre objet et tableau contre tableau sont traités de manière récursive et d'autres situations sont comparées directement.Directement
===
jugement, si égalité, c'est fait.Dans le cas d'inégalité, s'il s'agit d'un objet contre un objet ou d'un tableau contre un tableau, comparez-le avec JSON stringify, et tout le reste sera fait.
Si l'objet est dans un ordre séquentiel ou si les éléments internes du tableau sont des tableaux ordonnés, alors les éléments sont convertis en chaînes et comparés
.Il est préférable d'utiliser un autre caractère pour séparer les JSON. Si vous ne pouvez le faire que tel quel, utilisez « hello » pour diviser le tableau, puis comparez pour supprimer les doublons.
nouvel ensemble()