0

I have an array of objects how to check all fields except two fields are same using javascript

except cid and id , check all fields are same, if so return true else false

// 
var arrobj1=[
  {id:1, cid:"20", name:"rsx", value: "200"},
  {id:2, cid:"18", name:"rsx", value: "200", }
]
Expected Output:
true

var arrobj2=[
  {id:1, cid:"20", name:"ssa", value: "200"},
  {id:2, cid:"18", name:"rsx", value: "200", }
]
Expected Output:
false
var result =  [...new Map(arrobj1.map(v => [v.name, v.value])).values()];
if(result.length >0){
return true;
}else{return false;}

code123
  • 67
  • 1
  • 8
  • Your code is basically fine, however a map size of 1 means they are equal, and you should return true in that case: `return result.length === 1;` see here: https://jsfiddle.net/v5s9m7jd/ –  Apr 21 '22 at 07:51
  • @ChrisG thanks may i know how to return array of objects by removing one duplicates by value same – code123 Apr 21 '22 at 07:55
  • Are you asking how to remove duplicates from an array of objects? –  Apr 21 '22 at 07:57
  • i want to remove one duplicate item only if many duplicates found based on value – code123 Apr 21 '22 at 07:59

1 Answers1

0

You can use array.every() method:

const arrobj1 = [{
    id: 1,
    cid: "20",
    name: "rsx",
    value: "200"
  },
  {
    id: 2,
    cid: "18",
    name: "rsx",
    value: "200"
  }
]

const arrobj2 = [{
    id: 1,
    cid: "20",
    name: "ssa",
    value: "200"
  },
  {
    id: 2,
    cid: "18",
    name: "rsx",
    value: "200"
  }
]

const areSameObjectsArray = (objArr) => {
  const firstObj = objArr[0];
  const ignoredProperties = new Set(['id', 'cid']);

  return objArr.every(checkObj => {
    for (const key in checkObj) {
      if (ignoredProperties.has(key)) continue;

      if (firstObj[key] !== checkObj[key]) return false;
    }

    return true;
  })
};

console.log(areSameObjectsArray(arrobj1));
console.log(areSameObjectsArray(arrobj2));
EzioMercer
  • 1,502
  • 2
  • 7
  • 23