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

如何判断对象数组的id属性集合与固定字符串数组完全相等

数组匹配校验逻辑实现

基础定义

现有两个待校验数组:

  • 固定值数组fixed:存储目标id集合,内容固定不变,示例:
fixed = ["123","456","789"] 
  • 可变对象数组variableArray:每个元素为包含id字段的对象,内容可变动,示例:
variableArray = [{name:"Joe",id:"123"},{name:"Joe",id:"456"},{name:"Joe",id:"789"}]

校验规则

同时满足以下两个条件时返回true,否则返回false:

  1. variableArray的长度与fixed完全一致
  2. variableArray所有元素的id值恰好和fixed的所有元素完全匹配,无多余、无缺失

不合法场景示例

场景1:长度不一致

fixed=["123","456","789"] 
variableArray=[{name:"Joe",id:"456"},{name:"Joe",id:"789"}] 

返回false,variableArray长度比fixed短,缺少id为"123"的元素。

场景2:长度一致但id不匹配

fixed=["123","456","789"] 
variableArray=[{name:"Joe",id:"123"},{name:"Joe",id:"456"},{name:"Joe",id:"001"}]

返回false,虽然长度相同,但variableArray不存在id为"789"的元素,同时存在不在fixed中的id值"001"。

代码实现(JavaScript)

不要求id顺序匹配

只要两个数组的id集合完全重合即可,不受元素排序影响:

function checkMatch(fixed, variableArray) {
  // 优先校验长度,不匹配直接返回false
  if (fixed.length !== variableArray.length) return false
  const fixedIdSet = new Set(fixed)
  const usedIdSet = new Set()
  for (const item of variableArray) {
    const currentId = item.id
    // 存在不在fixed中的id直接返回false
    if (!fixedIdSet.has(currentId)) return false
    // variableArray存在重复id直接返回false
    if (usedIdSet.has(currentId)) return false
    usedIdSet.add(currentId)
  }
  return true
}

要求id顺序完全匹配

要求variableArray第N个元素的id必须和fixed第N位的元素完全一致:

function checkMatchWithOrder(fixed, variableArray) {
  if (fixed.length !== variableArray.length) return false
  return fixed.every((fixedId, index) => variableArray[index].id === fixedId)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:05