为了账号安全,请及时绑定邮箱和手机立即绑定

将两个嵌套的 json 对象与 javascript 结合起来,并用一个键循环遍历它

将两个嵌套的 json 对象与 javascript 结合起来,并用一个键循环遍历它

ITMISS 2022-12-18 16:35:49
我有几个 json 对象(obj1、obj2...),每个对象都取自 .txt 文件:{  "countries": [    {      "Country name": "China",      "Flag": "CN",      "Population": 1395380000,      "undefined": "#688144"    }, ... ]}和{  "countries": [    {      "Country name": "India",      "Flag": "IN",      "Population": 1338677000,      "undefined": "#B78A31"    }, ...]}等等。现在我想像这样组合它们:{  "countries": [    {      "Country name": "China",      "Flag": "CN",      "Population": 1395380000,      "undefined": "#688144"    }, {      "Country name": "India",      "Flag": "IN",      "Population": 1338677000,      "undefined": "#B78A31"    }, ... ]}所以我可以像这样遍历数据:let obj1 = {}; //saved Data From Txt1;let obj2 = {}; //saved Data From Txt2...let obj = combined?for (var key in obj.countries) {var num1 = obj.countries[key].Population+popholder;if (target >= popholder && target <= num1) {  var country = obj.countries[key]['Country name'];  var testas = document.getElementById("countryname")}}我怎么能做到这一点?
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

只需连接数组:


const obj1 = {

    "countries": [{

            "Country name": "China",

            "Flag": "CN",

            "Population": 1395380000,

            "undefined": "#688144"

        }

    ]

};


const obj2 = {

    "countries": [{

            "Country name": "India",

            "Flag": "IN",

            "Population": 1338677000,

            "undefined": "#B78A31"

        }

    ]

};


const result = {

    countries: [...obj1.countries, ...obj2.countries]

};


console.log(result);


查看完整回答
反对 回复 2022-12-18
?
精慕HU

TA贡献1845条经验 获得超8个赞

您可以使用创建一个具有相同countries属性的新对象Array#concat并将所有国家/地区数组合并为一个:

const obj1 = {

  "countries": [{

    "Country name": "China",

    "Flag": "CN",

    "Population": 1395380000,

    "undefined": "#688144"

  }, /* ... */ ]

};


const obj2 = {

  "countries": [{

    "Country name": "India",

    "Flag": "IN",

    "Population": 1338677000,

    "undefined": "#B78A31"

  }, /* ... */ ]

};


const obj3 = {

  "countries": [{

    "Country name": "Sealand",

    "Flag": "",

    "Population": 27,

    "undefined": "#0000FF"

  }, /* ... */ ]

};


const combined = { 

  countries: [].concat(

    obj1.countries, 

    obj2.countries, 

    obj3.countries

  )

};


console.log(combined);

如果你有一个对象数组,你可以结合Array#map扩展语法来提取countries数组并将它们组合成一个:

const obj1 = { "countries": [{ "Country name": "China", "Flag": "CN", "Population": 1395380000, "undefined": "#688144" }, /* ... */ ]};

const obj2 = { "countries": [{ "Country name": "India", "Flag": "IN", "Population": 1338677000, "undefined": "#B78A31" }, /* ... */ ]};

const obj3 = { "countries": [{ "Country name": "Sealand", "Flag": "", "Population": 27, "undefined": "#0000FF" }, /* ... */ ]};


const objArr = [obj1, obj2, obj3];


const combined = { 

  combined: [].concat(

    ...objArr.map(x => x.countries)

  )

};


console.log(combined)



查看完整回答
反对 回复 2022-12-18
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

你可以push所有数组合二为一。


const obj1 = {

  "countries": [

    {

      "Country name": "China",

      "Flag": "CN",

      "Population": 1395380000,

      "undefined": "#688144"

    }, ]}

const obj2 = {

  "countries": [

    {

      "Country name": "India",

      "Flag": "IN",

      "Population": 1338677000,

      "undefined": "#B78A31"

    },]};

const res = [obj1, obj2, /*...*/]

  .reduce((acc,{countries})=>(acc.countries.push(...countries),acc), {countries: []});

console.log(res);


查看完整回答
反对 回复 2022-12-18
  • 3 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号