recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Une déduplication de tableau plutôt pervertie, veuillez trouver une méthode ! ! !

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]];

阿神阿神2786 Il y a quelques jours566

répondre à tous(5)je répondrai

  • 習慣沉默

    習慣沉默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);

    répondre
    0
  • 巴扎黑

    巴扎黑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.

    1. Directement === jugement, si égalité, c'est fait.

    2. 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.

    répondre
    0
  • 怪我咯

    怪我咯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);

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱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.

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:21:12

    nouvel ensemble()

    répondre
    0
  • Annulerrépondre