Исходная проблема:
Я пытаюсь создать новый объект, но вставка немного сложная:
Я создаю объект внутри объекта,
result = Object.values(window.datas).reduce( (newObj, dataRow) => {
if ( (user.user_id == dataRow.user_id) && (that.dataResult[dataRow.data_id] !== undefined) && (that.dataResult[dataRow.data_id].length !== 0) ) {
newObj[that.catToApp[that.dataResult[dataRow.data_id].cat_id].name][that.dataResult[dataRow.data_id].ts] = that.dataResult[dataRow.data_id];
}
return newObj;
}, {} );
Я получаю эту ошибку:
Ошибка в v-on обработчике: «Ошибка типа: невозможно установить свойство« 2017-02-01 »из неопределенного» * 1013 *
в строке:
newObj[that.catToApp[that.dataResult[dataRow.data_id].cat_id].name][that.dataResult[dataRow.data_id].ts] = that.dataResult[dataRow.data_id];
Что я пробовал:
- При изменении этой строки (на нежелательный результат, но только длятестирование) иметь только один ключевой объект (вместо 2), и он работает:
newObj[that.catToApp[that.dataResult[dataRow.data_id].cat_id].name] = that.dataResult[dataRow.data_id];
Я пытался сделать что-то вроде этого - добавив временную переменную и выдав ей результаты, вначале я думал, что решил проблему, но после просмотра этого несколько раз я заметил, что результаты дублируются и "cat_id"S дублируются.
result = Object.values(window.datas).reduce( (newObj, dataRow) => {
if ( (user.user_id == dataRow.user_id) && (that.dataResult[dataRow.data_id] !== undefined) && (that.dataResult[dataRow.data_id].length !== 0) ) {
temp[that.dataResult[dataRow.data_id].ts] = that.dataResult[dataRow.data_id];
newObj[that.catToApp[that.dataResult[dataRow.data_id].cat_id].app_name] = temp;
}
return newObj;
}, {} );
temp = {};
Основной вопрос:
Как правильно установить переменную объекта следующим образом:
objectVariable[step1][step2] = result;
Полный код:
let that = this;
let result = null;
let temp = {};
this.activeUsers.forEach( user => {
result = Object.values(window.datas).reduce( (newObj, dataRow) => {
if ( (user.user_id == dataRow.user_id) && (that.dataResult[dataRow.data_id] !== undefined) && (that.dataResult[dataRow.data_id].length !== 0) ) {
newObj[that.catToApp[that.dataResult[dataRow.data_id].cat_id].app_name][that.dataResult[dataRow.data_id].ts] = that.dataResult[dataRow.data_id];
}
return newObj;
}, {} );
if (Object.entries(result).length !== 0) {
that.usersToDatas[user.user_id] = result;
}
temp = {};
});