如何在JavaScript中分离JSON数据

时间:2019-06-11 08:36:22

标签: javascript arrays json object

我对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])
      }
    }

5 个答案:

答案 0 :(得分:2)

只需提取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; }

答案 1 :(得分:2)

您可以将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);

答案 2 :(得分:1)

您可以单独选择最大值,将其保存到变量中,然后将其从对象中删除。这将使您可以将所有手机分配给变量,即使它们的名称发生了变化。例如;

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

答案 3 :(得分:0)

在该函数中,您将Data设置为参数,请执行以下操作

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

答案 4 :(得分:0)

以下代码可以解决您的问题

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)