簡體   English   中英

如何在JavaScript中分離JSON數據

[英]How to separate a json data in javascript

我對js很陌生,現在我有一個json數據,該數據通過后端傳遞到我的js文件中。 json數據如下所示:

{
Vivo:{Time:[20190610,20190611],Price:[2000,2000]},
Huawei:{Time:[20190610,20190611],Price:[3000,3000]},
Maxvalue:3000
}

我得到的JSON數據是通過以下代碼:

fetch('/Tmall') //Tmall is the url i go to fetch data
.then(function(response) {
return response.json();
}).then(function(Data) {

...
}

接下來,我將處理要呈現在前端的數據,但是我不知道如何將數據分配給兩個不同的參數:

Cellphone = 
{
Vivo:{Time:[20190610,20190611],Price:[2000,2000]},
Huawei:{Time:[20190610,20190611],Price:[3000,3000]}
}

Max = {Maxvalue:3000}

這是我嘗試執行的操作,我使用了if-是將數據與原始數據分開的鍵,但是它沒有用

    var Cellphone = {}
    for (var i = 0; i < Data.length; i++)
    {
      if (Data.key[i] != 'Maxvalue'){
        Cellphone.push(Data[i])
      }
    }

只需提取Maxvalue屬性,然后將其他屬性分配給Cellphone 通過銷毀和傳播這真的很簡單:

 const data = { Vivo: { Time: [20190610, 20190611], Price: [2000, 2000] }, Huawei: { Time: [20190610, 20190611], Price: [3000, 3000] }, Maxvalue: 3000 }; const { Maxvalue: Max, ...Cellphone } = data; console.log("Max:", Max); console.log("Cellphone:", Cellphone); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

您可以將Object.keys()Array.prototype.filter()Array.prototype.map()結合使用。

碼:

 // Your `Data` response... const Data = {Vivo:{Time:[20190610,20190611],Price:[2000,2000]},Huawei:{Time:[20190610,20190611],Price:[3000,3000]},Maxvalue:3000}; // Logic const Cellphone = Object.keys(Data) .filter(k => k !== 'Maxvalue') .map(k => ({ [k]: Data[k] })); const Max = { Maxvalue: Data.Maxvalue }; console.log('Cellphone:', Cellphone); console.log('Max:', Max); 

您可以單獨選擇最大值,將其保存到變量中,然后將其從對象中刪除。 這將使您可以將所有手機分配給變量,即使它們的名稱發生了變化。 例如;

 let data = { Vivo:{Time:[20190610,20190611],Price:[2000,2000]}, Huawei:{Time:[20190610,20190611],Price:[3000,3000]}, Maxvalue:3000 } // save the maxValue key let maxValue = data.Maxvalue; // then remove it from the object delete(data.Maxvalue); // the remaining keys are cellphones let cellPhones = data; console.log(maxValue, cellPhones); 

在將Data設置為參數的函數中,執行以下操作

let Cellphone = {
    Vivo: Data.Vivo,
    Huawei: Data.Huawei
};
let Max = Data.Maxvalue;

以下代碼可以解決您的問題

var phones = {};
var max;
Object.entries(data).forEach(function (entry) {
  if (entry[0] == "Maxvalue") {
    max = entry[1];
  }
  else {
    phones[entry[0]] = entry[1];
  }
});
console.log("Phones: ", phones);
console.log("Max: ", max)

暫無
暫無

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

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