javascript - 在每个对象中创建和存储不同的数组
问题描述
我是 JS 中的新编程人员,我正在设计一个应用程序来按县(类似于州)和市(县)搜索网站。
从我通过 API 获得的数据中,我得到以下结果。
正如你所看到的,有一些县是重复的,我感兴趣的是在一个对象中分配县,并在该对象中创建一个包含其自治市的数组。
目前我已经删除了重复的县,但我不能将每个对象与其直辖市放在一起。
我的代码如下,基本上我在这里所做的是从县中删除重复的数据。
(变量数据是API图片1中的值)
for(let i=0; i< data.length; i++)
{
let found = false;
for (var j=0; j<array.length; j++) {
if (data[i].nom_comarca == array[j].comarca) {
municipis.push(data[i].municipi)
found = true;
break;
}
}
if(!found) // If not find we add into Array
{
array.push({
comarca : data[i].nom_comarca,
municipis: municipis
})
//municipis = [];
}
}
真的谢谢大家!!
解决方案
使用字典来跟踪重复的 nom_comarca。如果元素尚不存在,则将 municipi 属性转换为数组,否则将 municipi 值推送到现有元素的数组。
const data = [
{"nom_comarca": "1", "municipi": "1"},
{"nom_comarca": "1", "municipi": "2"},
{"nom_comarca": "2", "municipi": "3"},
];
const result = Object.values(data.reduce((acc, el) => {
if (!acc[el.nom_comarca]) {
acc[el.nom_comarca] = {...el, municipi: [el.municipi]};
} else {
acc[el.nom_comarca].municipi.push(el.municipi);
}
return acc;
}, {}));
console.log(result);
推荐阅读
- php - 如何在 CodeIgniter 中使用特定方法路由 URI
- javascript - 尝试从firebase获取对象行时未定义
- c# - C#/ IIS 中的 Rest Api Arguments 似乎太长了
- matlab - 在 Octave 中运行 Matlab 脚本时 print_usage 和 fzero 出错
- mysql - 具有动态输入的 WHERE 语句
- javascript - Primordals 在尝试开始回购时
- java - 我应该如何在没有 xml 的情况下加载 Spring 的 ApplicationContext 以进行单元测试?
- rust - 在多个函数中使用字符串的问题
- android - 使用 FileProvider 共享 DocumentFile
- c - 无法在其他计算机上运行带有库的 C 可执行文件