You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断数组中所有对象的指定属性值是否相同并返回该值

如何判断数组中所有对象的指定属性值相同并返回该值

问题场景

我有如下JavaScript数组示例:

var a = [ 
  { "Procedure_Code": "TKRRevision4" }, 
  { "Procedure_Code": "TKRRevision4" }, 
  { "Procedure_Code": "TKRRevision4" }
] 
var b = [ 
  { "Procedure_Code": "TKRRevision4" }, 
  { "Procedure_Code": "TKRRevision3" }, 
  { "Procedure_Code": "TKRRevision4" }
]

我想实现:当数组中所有对象的Procedure_Code值都相同时,返回该值;如果存在不同的值,就返回undefined或者其他自定义标识。找了很久类似问题没找到,求解决方法!


解决方案

这里有几种简洁实用的实现方式,你可以根据需求选择:

方法一:用every()方法做一致性校验

every()方法会遍历数组,判断所有元素是否符合指定条件。我们可以拿数组第一个元素的Procedure_Code作为基准,检查其余元素是否都和它一致:

function getSameProcedureCode(arr) {
  // 处理空数组,避免后续访问arr[0]报错
  if (arr.length === 0) return undefined;
  // 取第一个元素的代码作为基准值
  const targetCode = arr[0].Procedure_Code;
  // 检查所有元素的代码是否等于基准值
  const allMatch = arr.every(item => item.Procedure_Code === targetCode);
  return allMatch ? targetCode : undefined;
}

// 测试示例
console.log(getSameProcedureCode(a)); // 输出: TKRRevision4
console.log(getSameProcedureCode(b)); // 输出: undefined

方法二:利用Set去重判断

Set会自动剔除重复值,我们可以把数组中所有Procedure_Code提取出来存入Set,如果Set的长度为1,说明所有值都相同:

function getSameProcedureCode(arr) {
  if (arr.length === 0) return undefined;
  const codeCollection = new Set(arr.map(item => item.Procedure_Code));
  return codeCollection.size === 1 ? codeCollection.values().next().value : undefined;
}

// 测试示例
console.log(getSameProcedureCode(a)); // 输出: TKRRevision4
console.log(getSameProcedureCode(b)); // 输出: undefined

额外注意点

  • 如果数组中可能存在没有Procedure_Code属性的对象,建议在判断时加上属性存在性校验,比如在every()里写item.hasOwnProperty('Procedure_Code') && item.Procedure_Code === targetCode,防止出现undefined对比的问题;
  • 如果需要在值不同时返回自定义提示(比如字符串"存在不同的手术代码"),直接修改return语句里的替代值即可。

内容的提问来源于stack exchange,提问作者flix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:21:49