JavaScript добавляет значения к объекту в объект

#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'
           }
        });
    }
});
  

Ниже приведена скрипка для того же:

https://jsfiddle.net/r85hkpdw/

Комментарии:

1. Большое вам спасибо