Динамическое свойство Javascript со значением массива пусто после нажатия

Это безумие. Я читаю объект с веб-сервера и просматриваю его, и я могу добавить свойства к объекту. Но когда я пытаюсь сделать новую карту самостоятельно, она не работает. Так просто, как я могу это сделать

// from the server and works
plans: any[];
sourceByPlan: any[];

// my own map for other purposes I try to fill
// as I loop through the items from the server
customMap: any[]; // also tried 'any'

var res = JSON.parse(response);
this.plans = res.plans; // where res.plans looks like [{value: "id", label: "readableid"}, {value: "id2", label: "otherreadable"}]
this.sourceByPlan = res.sources; // where res.sources looks like { id: [Object, Object, Object...]};

// loop through each source and add a property
for(var i = 0; i < this.plans.length; i++){
    if (this.sourceByPlan[this.plans[i].value]){
        for (var j = 0; j < this.sourceByPlan[this.plans[i].value].length; j++){
            var sObj = this.sourceByPlan[this.plans[i].value][j];

            var status = this.getStatus(sObj); // simple string
            sObj["newstatus"] = status; // THIS WORKS AS EXPECTED


            // here is where the new non working code starts
            var key = this.plans[i].value + status ; // looks like 'asdf1234pending'

            if (!customMap[key]) {
                customMap[key] = [];
            }

             customMap[key].push(sObj); // this will still be empty
        }   
    }
}

sObj не поставляется со свойством sObj.newstatus с сервера, но позволяет мне добавить его по желанию. Я пытаюсь построить другую карту на лету, но каждый раз, когда я проверяю console.info(customMap), он каждый раз пуст. Логически это выглядит так же, как объект, который я получаю с сервера.

Что такое obj? Я не вижу других упоминаний об этом. Это должен быть sObj?

Pointy 26.01.2019 00:00

да, я отредактирую это

Alex 27.01.2019 16:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
150
1

Ответы 1

Вы отправляете неопределенный объект на свою пользовательскую карту. Вероятно, вы захотите использовать sObj:

customMap[key].push(sObj);

Для проблемы, которая является простой опечаткой, это должен быть комментарий.

Scott Marcus 26.01.2019 00:08

@ScottMarcus, почему ты так думаешь?

Zlatko 26.01.2019 00:11

Потому что проблема заключалась в простой опечатке, и это на самом деле одна из причин, по которой мы закрываем вопросы. Как видите, @Pointy поступил правильно. Это наш общий способ решения подобных проблем.

Scott Marcus 26.01.2019 00:12

@ScottMarcus Сделаю в следующий раз! Оставлю свой ответ здесь, чтобы другие люди тоже узнали об этом.

Laurens 26.01.2019 00:22

На самом деле, было бы лучше, если бы вы удалили свой ответ. Не все читают комментарии, и лучший способ избежать того, чтобы другие делали то же самое, — не иметь примеров того, как это делается. ;)

Scott Marcus 26.01.2019 00:26

Это была опечатка в вопросе, а не в самом коде. Проблема осталась как обычно. Нет переменной obj, есть только sObj.

Alex 27.01.2019 16:50

@Laurens, это не ответ. Как я уже сказал в ответ на комментарий, это не опечатка.

Alex 28.01.2019 14:53

Другие вопросы по теме