javascript - Deduplikasi tatasusunan yang agak sesat, sila cari kaedah! ! !
阿神
阿神 2017-05-19 10:19:12
0
5
587

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

阿神
阿神

闭关修行中......

membalas semua(5)
習慣沉默

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);
巴扎黑

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.

刘奇

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

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.

淡淡烟草味

Set baru()

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan