无法在 JavaScript 中生成对象中的动态密钥

问题描述 投票:0回答:1

我已经初始化了一个空对象,在其中动态创建一个键并在 for 循环内将值插入其中。但问题是它只取最后一个值。

为什么会发生这种情况?我这里需要什么修正?

const obj = {};
const filteredArr = {
  'Asia': ['India', 'China', 'Pakistan'],
  'Europe': ['Germany']
}

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

for (const key in filteredArr) {
  const values = filteredArr[key];
  for (const value of values) {
    if (uniqCountry.includes(value)) {
      if (obj.hasOwnProperty(key)) {
        obj[key].push(value);
      } else {
        obj['Rest'] = [];
        obj['Rest'].push(value);
        console.log('rest', obj['Rest']);
      }
    }
  }
}
console.log('Object', obj);

输出:

{}

预期输出:

{
  'Rest': ['Italy', 'Japan', 'Russia', 'Poland']
}
javascript arrays object
1个回答
1
投票

问题不太清楚,但这显示了您所要求的内容。我确实将“意大利”添加到filteredArr,并将“印度”添加到uniqCountry以显示这些示例。

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

let uniqCountry = ['Italy', 'Japan', 'Russia', 'Poland', 'India'];

for (const key in filteredArr) {
  const values = filteredArr[key];
  for (const value of values) {
    if (uniqCountry.includes(value)) {
      if (!obj.hasOwnProperty(key)) {
        obj[key] = [...(obj[key] ?? []), value];
        uniqCountry = uniqCountry.filter(u => u !== value);
      }
    }
  }
}
obj['Rest'] = uniqCountry;
console.log('Object', obj);

© www.soinside.com 2019 - 2024. All rights reserved.