JavaScript 向对象中的对象添加值
JavaScript add values to object in object
我是 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”和那天的温度而不删除其他日期,我该怎么做?
非常感谢!
您将迭代 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'
}
});
}
});
下面是 fiddle 同样的:
您可以使用 'forEach' 简单地遍历数组(数据),并在检查每个项目时发现其键是否与您要查找的键匹配。如果是这样,将新对象推送到该项目的 'values' 到对象数组
var newObj = { x: "08.10.2016", y: 34 };
data.forEach(item => {
if (item.key === 'Pt #1') item.values.push(newObj)
});
我是 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”和那天的温度而不删除其他日期,我该怎么做?
非常感谢!
您将迭代 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'
}
});
}
});
下面是 fiddle 同样的:
您可以使用 'forEach' 简单地遍历数组(数据),并在检查每个项目时发现其键是否与您要查找的键匹配。如果是这样,将新对象推送到该项目的 'values' 到对象数组
var newObj = { x: "08.10.2016", y: 34 };
data.forEach(item => {
if (item.key === 'Pt #1') item.values.push(newObj)
});