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

JavaScript动态生成对象键异常:循环未赋值导致结果为空问题排查

问题分析与修正方案

问题原因

  • 逻辑方向完全搞反:你当前代码是遍历filteredArr里的所有国家,判断这些国家是否在uniqCountry中,但filteredArr里的India、China、Pakistan、Germany没有一个出现在uniqCountry的列表里,导致核心判断条件if (uniqCountry.includes(value))从未触发,自然不会往空对象obj里添加任何内容。
  • 需求逻辑混淆:你的目标是把uniqCountry里的国家归类到Rest键下,但代码完全没处理uniqCountry的内容,反而在反向匹配无关的国家列表。

修正方案

方案一:直接实现预期(适用于uniqCountry内容全属于Rest的场景)

如果你的预期就是把整个uniqCountry数组放到obj.Rest中,不需要复杂循环,直接赋值即可:

const obj = {};
const uniqCountry = ['Italy', 'Japan', 'Russia', 'Poland'];

obj['Rest'] = [...uniqCountry]; // 用扩展运算符复制数组,避免后续原数组修改影响obj内的数据
console.log('Object', obj);

方案二:严谨判断(适配uniqCountry中可能存在filteredArr内国家的场景)

如果需要更通用的逻辑——判断uniqCountry里的国家是否不在filteredArr的任何分组中,再归类到Rest,可以这么写:

const obj = {};
const filteredArr = {
  'Asia': ['India', 'China', 'Pakistan'],
  'Europe': ['Germany']
};
const uniqCountry = ['Italy', 'Japan', 'Russia', 'Poland'];

// 把filteredArr里的所有国家收集到Set中,提升查找效率
const allFilteredCountries = new Set();
for (const region in filteredArr) {
  filteredArr[region].forEach(country => allFilteredCountries.add(country));
}

// 筛选出uniqCountry中不在filteredArr里的国家,赋值给Rest
obj['Rest'] = uniqCountry.filter(country => !allFilteredCountries.has(country));

console.log('Object', obj);

内容的提问来源于stack exchange,提问作者Digvijay Singh Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:32:53