Rumah  >  Soal Jawab  >  teks badan

javascript - Satu ialah tatasusunan dan satu lagi adalah objek Bagaimana untuk membandingkan dan mengalih keluar pendua?

var arr=[{'id':1,'name':1},{'id':2,name:2},{'id':3,'name':3}];
var obj = {'id':2,'name':2};

Bagaimana saya boleh membandingkan arr dan obj Selepas mendapati id2 diulang, alih keluar objek tatasusunan id:2 arr dan jana tatasusunan baharu?

仅有的幸福仅有的幸福2662 hari yang lalu821

membalas semua(4)saya akan balas

  • 给我你的怀抱

    给我你的怀抱2017-07-05 10:55:25

    Gunakan penapis tatasusunan untuk menapis untuk menjana tatasusunan baharu.
    Selain itu, bahagian kedua tatasusunan dalam soalan 'id:2'mempunyai kesalahan tatabahasa dan tanda petikan berada di kedudukan yang salah

    var res = arr.filter(function(e){
        return e.id!=obj.id
    })

    Berikut adalah imaginasi saya: Bagaimana jika perkara utama soalan ialah pasangan kunci-nilai diulang sebelum menapis... (Saya mungkin terlalu berfikir)

    Memandangkan anda juga mungkin ingin memastikan pasangan nilai kunci bagi elemen dalam tatasusunan mestilah betul-betul sama dengan pasangan nilai kunci obj: anda boleh pertimbangkan ini

    var arr=[{'id':1,'name':1},{id:2,name:3},{'id':3,'name':3}];
    var arr2=[{'id':1,'name':1},{id:2,name:2},{'id':3,'name':3}];
    var obj = {'id':2,'name':2};
    var res = arr.filter(function(e){//
      var result = true; //作为过滤标识
      for(var key in obj){//遍历obj的键值
          if(e[key]!=obj[key]){//如果出现键值相同当值不同,就不算重复
               result = true;
              break;
          }
          //如果上面条件不通过,那就表示键值重复
          result = false;
       }//遍历到最后,如果键值都重复,那result肯定是false,否则必然出现result=true的情况
       return result;
    });
    var res2 = arr.filter(function(e){
      var result = true; 
      for(var key in obj){
          if(e[key]!=obj[key]){
               result = true;
              break;
          }
          result = false;
       }
       return result;
    });

    balas
    0
  • PHP中文网

    PHP中文网2017-07-05 10:55:25

    var newArr = arr.filter(item => item.id !== obj.id)

    balas
    0
  • 迷茫

    迷茫2017-07-05 10:55:25

    var arr=[{'id':1,'name':1},{'id':2,name:2},{'id':3,'name':3}];
    var obj = {'id':2,'name':2};
    
    var index = -1;
    for (let i = 0; i < arr.length; i++) {
        let flag = false;
        for (let item in obj) {
            if (obj[item] !== arr[i][item]) {
                flag = true;
            }
        }
        if (!flag) {
            index = i;
        }
    }
    console.log(index);
    arr.splice(index,index>0);
    console.log(arr);

    balas
    0
  • 为情所困

    为情所困2017-07-05 10:55:25

    Array.prototype.filter()

    var arr=[{'id':1,'name':1},{'id':2,name:2},{'id':3,'name':3}];
    var obj = {'id':2,'name':2};
    var newArray = arr.filter((obj_)=>(obj_.id !== obj.id))

    balas
    0
  • Batalbalas