我已经初始化了一个空对象,在其中动态创建一个键并在 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']
}
问题不太清楚,但这显示了您所要求的内容。我确实将“意大利”添加到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);