JavaScript将值添加到对象中的对象

时间:2016-10-05 11:00:46

标签: javascript nvd3.js

我是JavaScript的新手,我正在为我的温度传感器编写Angular nvD3图表。

我有以下数据变量:

var data = [
        {
            key: 'Pt #1',
            values: [{x: "04.10.2016", y: 14 },{x: "05.10.2016", y: 16 },{x: "06.10.2016", y: 15 },{x: "07.10.2016", y: 16 }]
        },
        {
            key: 'PT #2',
            values: [{x: "04.10.2016", y: 39 },{x: "05.10.2016", y: 40 },{x: "06.10.2016", y: 47 },{x: "07.10.2016", y: 22 }]
        },
        {
            key: 'PT #3',
            values: [{x: "04.10.2016", y: 22 },{x: "05.10.2016", y: 23 },{x: "06.10.2016", y: 22 },{x: "07.10.2016", y: 43 }]
        },
        {
            key: 'PT #4',
            values: [{x: "04.10.2016", y: 25 },{x: "05.10.2016", y: 22 },{x: "06.10.2016", y: 23 },{x: "07.10.2016", y: 12 }]
        },
        {
            key: 'PT #5',
            values: [{x: "04.10.2016", y: 17 },{x: "05.10.2016", y: 17 },{x: "06.10.2016", y: 16 },{x: "07.10.2016", y: 37 }]
        },
        {
            key: 'PT #6',
            values: [{x: "04.10.2016", y: 24 },{x: "05.10.2016", y: 24 },{x: "06.10.2016", y: 25 },{x: "07.10.2016", y: 43 }]
        },
        {
            key: 'PT #7',
            values: [{x: "04.10.2016", y: 11 },{x: "05.10.2016", y: 12 },{x: "06.10.2016", y: 11 },{x: "07.10.2016", y: 11 }]
        }
];

由于数据对象内的数据必须由后来编写的脚本自动添加,因此我想知道如何访问数据变量中的某个键#并将数据添加到数据变量中。

例如,我想将第二天及其温度添加到关键的PT#1'价值观" 08.10.2016"从那天开始的温度而不删除其他温度,我该怎么做?

非常感谢!

2 个答案:

答案 0 :(得分:1)

你可以通过使用'forEach'简单地浏览数组(数据),并在检查每个项目时查找它的键是否与你之后的键匹配。如果是这样,请将该对象的“值”推送到对象数组

var newObj = { x: "08.10.2016", y: 34 };

data.forEach(item => {
    if (item.key === 'Pt #1') item.values.push(newObj)
});

答案 1 :(得分:0)

您将迭代array of objects并找到相应的key,然后操纵object的值,如下所示:

data.forEach(function(item) {
    if(item.key === 'Pt #1'){
        item.values.forEach(function(subItem) {
           console.log("subItem", subItem);
           if(subItem.y == '14') {
               subItem.x = '08.10.2016'
           }
        });
    }
});

以下是相同的小提琴:

https://jsfiddle.net/r85hkpdw/