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

如何基于给定值过滤JavaScript对象的键,拆分出匹配与不匹配的结果数组

错误原因

  • 循环嵌套逻辑错误:判断不匹配的逻辑嵌套在白名单遍历循环内,每遍历一个白名单值就会全量遍历一次对象的所有键,导致notArrAcceptedValues产生大量重复数据
  • 判断规则错误:仅比对当前遍历的单个白名单值,没有判断键是否在整个白名单数组内
  • 取值错误:向notArrAcceptedValues塞值时错误传入了所有对象值的集合,而非当前不匹配键对应的值

正确实现

直接遍历对象的所有键,逐个判断归属的数组即可:

const acceptedValues = ["250", "300"];

const myObj = {
  250: [1222, 1330, 1334, 1336, 6130, 6154, 6186, 6311, 6314],
  300: [1112, 1146, 1186, 1224, 6657],
  315: [710, 717],
  545: [4778],
  700: [637, 969, 1321, 6534, 1324, 6898, 738, 6899],
  750: [6323],
  900: [1717, 1718, 1720],
  1500: [5824, 5830, 5831, 5835, 5919, 5920, 5989],
};

let arrAcceptedValues = [];
let notArrAcceptedValues = [];

for (const key of Object.keys(myObj)) {
  if (acceptedValues.includes(key)) {
    arrAcceptedValues.push(myObj[key]);
  } else {
    notArrAcceptedValues.push(myObj[key]);
  }
}

console.log("arrAcceptedValues", arrAcceptedValues);
console.log("notArrAcceptedValues", notArrAcceptedValues);

运行后得到的arrAcceptedValues会包含白名单键对应的2个数组,notArrAcceptedValues包含剩余6个非白名单键对应的数组,无冗余重复数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:00