#javascript #nvd3.js
#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» и температурой с этого дня, не удаляя остальные, как я могу это сделать?
Большое вам спасибо!
Комментарии:
1. Вы что-нибудь пробовали? Вы должны показать, что вы пробовали, это лучший способ для нас помочь вам понять, где что-то пошло не так. Вы узнаете больше, чем если бы я просто написал код для вас
2. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… и developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Ответ №1:
вы могли бы просто просмотреть массив (данные) с помощью ‘forEach’ и после проверки каждого элемента определить, соответствует ли его ключ нужному вам ключу. если это так, вставьте в «значения» этого элемента новый объект в массив объектов
var newObj = { x: "08.10.2016", y: 34 };
data.forEach(item => {
if (item.key === 'Pt #1') item.values.push(newObj)
});
Комментарии:
1. обратите внимание, что ваш ключ на самом деле ‘Pt # 1’ со строчной буквой ‘t’
2. Спасибо! Сработало как шарм
Ответ №2:
Вы должны выполнить итерацию 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'
}
});
}
});
Ниже приведена скрипка для того же:
Комментарии:
1. Большое вам спасибо