Я получаю массив объектов из вызова RX / JS из бэкэнда http. Он возвращает объект, с которым я затем пытаюсь работать. Я делаю изменения в этом объекте, используя цикл for (в этом примере я пробую .forEach
, потому что я пробовал несколько разных вещей, и ни одна из них, похоже, не работает.
Когда я запускаю кодЯ получаю очень странную проблему. Если я возвращаю значения свойств, я получаю новые значения (т. Е. correctionQueued
возвращает значение true и т. Д.), Но уже на следующей строке, когда я возвращаю объект, те же значенияте же, что и исходные (correctionQueued
=== false и т. д.) ОДНАКО, correctionStatus
(которого нет в исходном объекте из http) устанавливает просто отлично.
Я не понимаюкак array[index].correctionQueued
может возвращать true, но array[index]
возвращает объект с correctionQueued
как false.
После цикла исходный массив (checklistCopy
) идентичен объекту до forEach
цикл, за исключением того, что теперь установлено новое свойство (correctionStatus
), но все свойства, которые я изменил и которые были частью исходного объекта, остаются такими же, как были.
Я пытался использовать for для, для in,и .forEach. Я использовал индекс, чтобы изменить Oоригинальный массив, всегда один и тот же результат. Предыдущие свойства не меняются, добавляются новые свойства. Я даже пытался работать с копией объекта на случай, если в объекте, возвращенном из rxjs, есть что-то особенное, но безрезультатно.
checklistCopy.forEach((checklistItem, index, array) => {
if (checklistItem.crCode.isirName === correctionSetItem) {
array[index].correctionQueued = true;
array[index].correctionValue = mostRecentCorrection.correctionValue;
array[index].correctionStatus = mostRecentCorrection.status;
console.log(array[index].correctionQueued, array[index].correctionValue, array[index].correctionStatus);
console.log(array[index]);
}
}
);
Я не получаю сообщение об ошибке, но получаю. .
Исходный объект:
correctionQueued: false;
correctionValue: JAAMES;
-
console.log(array[index].correctionQueued, array[index].correctionValue, array[index].correctionStatus);
true JAMES SENT
, но при печати всего объекта:
console.log(array[index]);
correctionQueued: false;
correctionValue: JAAMES;
correctionStatus: "SENT'; <-- This is set correctly but does not exist on original object.