簡體   English   中英

將兩個嵌套的 json 對象與 javascript 結合起來,並用一個鍵循環遍歷它

[英]Combine two nested json objects with javascript and loop through it with a key

我有幾個 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")
}}

我怎么能做到這一點?

只需連接 arrays:

 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);

您可以使用創建具有相同countries地區屬性的新 object 並使用Array#concat將所有國家/地區的 arrays 合並為一個:

 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 arrays 並將它們組合成一個:

 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)

您可以push所有 arrays 合二為一。

 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM