繁体   English   中英

如何检查对象数组是否具有相同键的相同值?

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

我有一个 object 数组,想检查键“PhysicalVirtual”在所有对象中是否具有相同的值。 如果它具有相同的值,则应返回true否则应返回false

我尝试过的代码:

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'));

错误:此处出现语法错误

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

您可以使用arraysevery方法来测试其所有成员的条件,例如:

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

console.log(isTrue)
>>> True

JS Array.every是最好的解决方案

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

使用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)

编辑:没有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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM