如何基于给定值过滤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
相关产品推荐
相关产品推荐

