Rumah  >  Soal Jawab  >  teks badan

javascript - js menentukan sama ada tatasusunan diulang

Bagaimana js menentukan sama ada terdapat nilai pendua dalam objek tatasusunan, dan padamkan nilai pendua untuk menyimpan hanya satu
Sebagai contoh var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}] Cara membandingkan

typechotypecho2663 hari yang lalu1049

membalas semua(5)saya akan balas

  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:59:12

    Anda boleh menemuinya dengan gelung berganda, bandingkan yang pertama dengan yang berikut, padamkannya jika diulang, cari dari yang kedua, bandingkannya ke belakang, dan padamkannya jika diulang

    const del = (arr) => {
        for( let i=0;i<arr.length;i++) {
            for(let j=i+1;j<arr.length;j++) {
                if (arr[i].id==arr[j].id) {
                    arr.splice(j,1);
                    i--;
                }
            }
        }
        return arr;
    }

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:59:12

    Ditulis sesuka hati. . . Tidak pasti jika semua keperluan dipenuhi. . . Haha

    Kaedah 1:

    const del = (arr)=>{
      let map = [];
      for(let i = 0; i < arr.length; i++) {
        let key = JSON.stringify(arr[i]);
        if(map.includes(key)) {
            arr.splice(i, 1);
            i--;
        } else {
            map.push(key);
        }
      }
    
      return arr;
    }

    Kaedah 2:

    const del = arr=>Array.from(new Set(arr.map(a=>JSON.stringify(a)))).map(a=>JSON.parse(a))

    balas
    0
  • 習慣沉默

    習慣沉默2017-07-05 10:59:12

    temp.indexOf ( arr[i].name ) = -1;

    res.push(arr[i]);

    Terdapat banyak kaedah untuk menyahduplikasi tatasusunan, dan anda boleh mempunyai kaedah yang lebih baik

    balas
    0
  • ringa_lee

    ringa_lee2017-07-05 10:59:12

    Bahan mentah

    arr ialah tatasusunan satu dimensi dan unsur-unsurnya ialah objek. Kandungan yang akan diproses ialah atribut name di bawah objek.

    var arr = [{name:'a'},{name:'b'},{name:'c'},{name:'d'},{name:'a'}]

    Memproses idea

    Lintasinya, kemudian bandingkan satu persatu setiap kali item 基础上再遍历一次 arr dilalui Jika pendua ditemui, tinggalkan rekod

    var logger = (a, b) => {
        console.group('谁重复了?');
        console.log('元素:', a); 
        console.log('下标:', b);
        console.groupEnd(); 
    }
    
    // 遍历 
    arr.filter((item, idx, its) => {
        // 一旦发现有重复的元素就返回 true  (通过 its.some 注意他的两个参数 e 和 idx2)
        // 无重复的过滤掉  
        return its.some((e, idx2) => {
            return (e.name === item.name && idx2 !== idx); 
        });
    }).forEach(logger); 
    

    ScreenShot

    balas
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-05 10:59:12

    // Penyahduaan tatasusunan
    // Kunci bermaksud penyahduaan tatasusunan yang kompleks, yang berdasarkan kekunci atribut objek dalam tatasusunan
    fungsi arrUniq(arr, kunci) {

    if (!Array.isArray(arr) || arr.length < 2) {
        return arr;
    }
    
    // 简单数组去重
    if (!key) {
        return Array.from(new Set(arr));
    }
    
    // 复杂数组去重
    var obj = {},
        res = [];
    
    arr.forEach((item) => {
        if (!obj[item[key]]) {
            res.push(item);
            obj[item[key]] = true;
        }
    });
    
    return res;

    }

    balas
    0
  • Batalbalas