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

如何使用JavaScript检查对象数组中指定属性值是否全部相同

检查对象数组中所有对象的cid属性值是否全部相同

需求说明

检查对象数组中所有对象的cid属性值是否全部相同,若是则返回true。注意:cid的取值不固定,示例中的109可能会变化。

尝试的代码

var arrobj = [{"cid":109,"aid":220},{"cid":109,"aid":221}]

// I Tried

const result = arrobj.every(e => e.cid);
console.log(result)

问题分析

你当前的代码逻辑不符合需求:arrobj.every(e => e.cid)仅判断数组里每个对象的cid属性是否存在且值为“真值”(比如非0、非空字符串等),并没有校验所有cid的取值是否完全一致。哪怕数组里存在不同的cid值,只要它们都是真值,代码依然会返回true。

正确解法

解法一:以第一个元素的cid为基准对比

取数组第一个元素的cid作为参照,用every方法校验所有元素的cid是否和这个基准值一致:

var arrobj = [{"cid":109,"aid":220},{"cid":109,"aid":221}];

// 处理空数组的情况(可根据业务需求调整返回值)
if (arrobj.length === 0) {
  console.log(true); // 或false,按需修改
} else {
  const baseCid = arrobj[0].cid;
  const result = arrobj.every(item => item.cid === baseCid);
  console.log(result); // 输出true
}

解法二:利用Set去重判断

利用Set自动去重的特性,提取所有cid存入Set后,判断Set的大小是否为1(大小为1说明所有cid都相同):

var arrobj = [{"cid":109,"aid":220},{"cid":109,"aid":221}];

const cidCollection = new Set(arrobj.map(item => item.cid));
const result = cidCollection.size === 1;
console.log(result); // 输出true

额外注意事项

  • 若数组为空,两种解法的返回值需要根据业务逻辑调整:比如空数组可返回true(不存在不同的cid)或false(无元素可对比)。
  • 如果数组中可能存在没有cid属性的对象,需要补充属性存在的判断,比如把解法一中的条件修改为:item.hasOwnProperty('cid') && item.cid === baseCid。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:52:40