使用变量和对象中的数据将数据添加到JSON对象中

时间:2019-10-28 17:13:06

标签: node.js json

所以我的目标是拥有一个对象变量,该变量在开始时为空,但是随着代码开始运行,它将被来自其他变量的数据填充。装满后,它应该看起来像这样:

{
    "banana" : 
    {
        "color" : "yellow",
        "calories" : 300
    },
    "apple" : 
    {
        "color" : "green",
        "calories" : 250
    },
    ...
}

被认为是信息来源的两个数组和一个JSON对象看起来像这样:

var fruits = {
    "product 1" :
    {
        "price" : 1.2,
        "stock" : 124,
        "name" : "banana"
    },
    "product 2" :
    {
        "price" : 0.6,
        "stock" : 21,
        "name" : "apple"
    },
    ...

}

var colors = [yellow, green, ...];
var calories = [300, 250, ...];

简单地说,我需要从JSON对象中提取水果的名称,并分配适当的卡路里 color 属性。

到目前为止,我一直在努力使这项工作至少一个小时,但是失败了。我的一些尝试如下:

 var object.(fruits.product1) = JSON.stringify({colors[0] : calories[0]});

//also tried this
var object.(fruits.product1) = "{""'" + (colors[0]) + "'":+calories[0]+"}";
//and tried many other things...

还请注意,仅将其转储到一个对象数组中是不可行的,因为该对象将非常庞大,而这样查找所需的清单将非常浪费时间和资源。

3 个答案:

答案 0 :(得分:1)

我相信这样的东西会满足您的需求:

var fruits = {
  "product 1" : {
    "price" : 1.2,
    "stock" : 124,
    "name" : "banana"
  },
  "product 2" : {
    "price" : 0.6,
    "stock" : 21,
    "name" : "apple"
  }
}

var colors = ['yellow', 'green'];
var calories = [300, 250];
var json = {};

Object.keys(fruits).forEach((key, index) => {
  json[fruits[key].name] = {
    color: colors[index],
    calories: calories[index]
  }
})

创建的对象看起来像

{
  "banana" : {
    "color" : "yellow",
    "calories" : 300
  },
  "apple" : {
    "color" : "green",
    "calories" : 250
  },
}

答案 1 :(得分:1)

    var fruits = {
    "product 1" :
    {
        "price" : 1.2,
        "stock" : 124,
        "name" : "banana"
    },
    "product 2" :
    {
        "price" : 0.6,
        "stock" : 21,
        "name" : "apple"
    },
}

var colors = ['yellow', 'green']
var calories = [300, 250]

const result = {}
 Object.keys(fruits)
          .forEach((key, index) => {
             Object.assign(result, {
               [fruits[key].name]: {
                 color: colors[index],
                 calories: calories[index],
                 stock: fruits[key].stock,
                 price: fruits[key].price,
               }

             })
           })
console.log(result)

应显示:

{
  "banana": {
    "color": "yellow",
    "calories": 300,
    "stock": 124,
    "price": 1.2
  },
  "apple": {
    "color": "green",
    "calories": 250,
    "stock": 21,
    "price": 0.6
  }
}

答案 2 :(得分:0)

var fruits = {
    "product 1" :
    {
        "price" : 1.2,
        "stock" : 124,
        "name" : "banana"
    },
    "product 2" :
    {
        "price" : 0.6,
        "stock" : 21,
        "name" : "apple"
    },
}

var colors = ['yellow', 'green']
var calories = [300, 250]

 Object.keys(fruits)
          .forEach((key, index) => {
             Object.assign(fruits[key], {
                color: colors[index],
                calories: calories[index]
             })
           })

在此之后结果对象:

{
  "product 1": {
    "price": 1.2,
    "stock": 124,
    "name": "banana",
    "color": "yellow",
    "calories": 300
  },
  "product 2": {
    "price": 0.6,
    "stock": 21,
    "name": "apple",
    "color": "green",
    "calories": 250
  }
}