首页 > 解决方案 > 在每个对象中创建和存储不同的数组

问题描述

我是 JS 中的新编程人员,我正在设计一个应用程序来按县(类似于州)和市(县)搜索网站。

从我通过 API 获得的数据中,我得到以下结果。

来自 API 的数据

正如你所看到的,有一些县是重复的,我感兴趣的是在一个对象中分配县,并在该对象中创建一个包含其自治市的数组。

目前我已经删除了重复的县,但我不能将每个对象与其直辖市放在一起。

数组的 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 = [];
    }
}

真的谢谢大家!!

标签: javascriptarraysjsonapiobject

解决方案


使用字典来跟踪重复的 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);


推荐阅读