krish
krish

Reputation: 1117

How to check if array of objects has same value for same key?

I have an array of object ,wanted to check the key "PhysicalVirtual" has same value in all objects. if it has same value, should return true else it should return false.

code which I have tried:

var testArray=[{
    "Hostname": "NDCWCAP03",   
    "PhysicalVirtual": "P",
    "Tier1": null,
    "Tier3": null,    
}, {
    "Hostname": "NDCWCAP05",
    "PhysicalVirtual": "P",
    "Tier1": null,
    "Tier3": null,    
}];

gs.info(testArray.find(key => key.PhysicalVirtual === 'P'));

Error: getting syntax error here

Evaluator: com.glide.script.RhinoEcmaError: syntax error
   script : Line(13) column(30)
console.log(testArray.find(key => key.PhysicalVirtual === 'P'));

Upvotes: 0

Views: 1026

Answers (3)

Azad
Azad

Reputation: 5264

JS Array.every is best solution for this

var testArray=[{
    "Hostname": "NDCWCAP03",   
    "PhysicalVirtual": "P",
    "Tier1": null,
    "Tier3": null,    
}, {
    "Hostname": "NDCWCAP05",
    "PhysicalVirtual": "P",
    "Tier1": null,
    "Tier3": null,    
}];

//ES6
//let PhysicalVirtualValue = testArray[0]?.PhysicalVirtual;
//let hasValue = false;
//if (testArray.length)
//  hasValue = testArray.every( e=> e.PhysicalVirtual == PhysicalVirtualValue);

//console.log(hasValue);

//without Array.every
var PhysicalVirtualValue = testArray[0]? testArray[0].PhysicalVirtual : '';
var hasValue = true;
for(var i = 0; i < testArray.length; i++) {

  if (testArray[i].PhysicalVirtual != PhysicalVirtualValue){
    hasValue = false;
    break;
  }    
}


console.log(hasValue);

Upvotes: 1

symlink
symlink

Reputation: 12209

Use Array.every()

let testArray = [{Hostname:"NDCWCAP03",PhysicalVirtual:"P",Tier1:null,Tier3:null},{Hostname:"NDCWCAP05",PhysicalVirtual:"P",Tier1:null,Tier3:null}];

let PV1 = testArray[0].PhysicalVirtual
let allMatch = testArray.every(obj => obj.PhysicalVirtual === PV1)
console.log(allMatch)

Edit: Without Array.every()

var testArray = [{Hostname:"NDCWCAP03",PhysicalVirtual:"P",Tier1:null,Tier3:null},{Hostname:"NDCWCAP05",PhysicalVirtual:"P",Tier1:null,Tier3:null}];

var PV1 = testArray[0].PhysicalVirtual;
var allMatch = true;
for(var i=0; i<testArray.length; i++){
  if(testArray[i].PhysicalVirtual !== PV1){
    allMatch = false;
    break;
  }
}
console.log(allMatch)

Upvotes: 2

marcos
marcos

Reputation: 4510

You can use every method of arrays to test a condition in all its members like:

const isTrue = testArray.every(
  ({ PhysicalVirtual }) => PhysicalVirtual === testArray[0].PhysicalVirtual
);

console.log(isTrue)
>>> True

Upvotes: 1

Related Questions