如何向数组中的所有对象添加属性并动态设置其值。-Javascript

时间:2017-05-31 01:23:08

标签: javascript

我有一个对象数组,我想为每个对象添加一个Object类型的道具,只是该字段的值将是动态的。

var data= [
              { name:"Jan", y:0 },
              { name:"Feb", y: 71.5 },
              { name: "Mar", y:106.4 },
              { name: "Apr", y:106.4 },
              { name: "May", y:0 },
              { name: "Jun", y:106.4 },
              { name: "Jul", y:166.4 },
              { name: "Aug", y:36.4 },
              { name: "Sep", y:0 },
              { name: "Oct", y:26.4 },
              { name: "Nov", y:206.4 },
              { name: "Dec", y:92.4 }
            ]

现在我想添加一个道具。 //将prop添加到数组中的第一项。

data[0].plot = {rad: 1} 

我的问题是: 1)如何将"plot"对象添加到数据中的每个项目 2)rad的值应该是这样的,它应该对应于' y'的值。在数据中 即:如果'y' =0,的值(数据中的最小值)则为" rad"值应为1, 同样:y=206.4(其最大值)的值,然后rad应为10.

" rad" 0到206.4之间的值应该对应于' y'并且介于1-10之间(这是" rad"范围)。

我希望这是有道理的。如果需要,我会详细说明, 在此先感谢!!

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作(请查看jsbin):

data.forEach(datum => {
  datum.plot = {
    rad: (10 * datum.y)/206.4 || 1
  }
})

我认为这是将y转换为rad的正确公式...无论如何,原则是您可以循环遍历对象并动态地将属性附加到每个对象。除了编程方面,你只需要找出正确的数学公式,然后把它放在那里计算你需要的任何值。