cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Deduplikasi tatasusunan yang agak sesat, sila cari kaedah! ! !

var a = ['hello',{hello: '323651',bye: '43434'},[1,2,34],true,10,9,8,10,'true','hello',true ,salah,9,{hello: '312312',ok: 32323},[1,2,34]];

阿神阿神2786 hari yang lalu568

membalas semua(5)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-19 10:21:12

    Untuk nombor, jenis Boolean, dsb., cuma tambahkan penghakiman secara langsung pada penghujungnya, atau tambahkannya bersama-sama Anda akan faham dengan lebih jelas apabila saya menulisnya dengan cara ini.

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

    balas
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:21:12

    Object vs Object dan Array vs Array diproses secara rekursif, dan kes lain dibandingkan secara langsung.

    1. Penghakiman === langsung, jika sama, ia sudah selesai.

    2. Sekiranya berlaku ketidaksamaan, jika objek vs objek atau tatasusunan vs tatasusunan, bandingkan dengan JSON stringify, dan semua yang lain akan baik-baik saja.

    balas
    0
  • 怪我咯

    怪我咯2017-05-19 10:21:12

    Jika jujukan objek adalah berjujukan atau elemen tatasusunan dalaman tersusun tatasusunan, maka elemen itu akan ditukar kepada rentetan dan kemudian dibandingkan.

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

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:21:12

    Sebaik-baiknya gunakan aksara lain untuk memisahkan JSON Jika anda hanya boleh mengekalkannya seperti sekarang, gunakan 'hello' untuk memisahkan tatasusunan, dan kemudian bandingkan untuk mengalih keluar pendua.

    balas
    0
  • 淡淡烟草味

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

    Set baru()

    balas
    0
  • Batalbalas