Maison > Questions et réponses > le corps du texte
var a = ['bonjour',{bonjour : '323651',au revoir : '43434'},[1,2,34],true,10,9,8,10,'true','bonjour',true ,false,9,{bonjour : '312312',ok : 32323},[1,2,34]];
習慣沉默2017-05-19 10:21:12
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);
巴扎黑2017-05-19 10:21:12
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.
怪我咯2017-05-19 10:21:12
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);
给我你的怀抱2017-05-19 10:21:12
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.