ImpAnonym
@ImpAnonym
Lorem ipsum dolor sit amet

Как не заменять значение свойства на другие, а добавить ещё одно?

Создаю объект в цикле и при повторении свойства оно заменяется на старое. Как это отменить?

Получается:
1: 2,
3: 4,
5: 7


А надо:
1: 2,
3: 4,
5: {
  0: 6,
  1: 7
}


Массив пробегаю через for of и Object.entries();

Код по просьбе Александр.
for (const [qsaKey, qsaValue] of Object.entries(qsaGRow)) {
                            for (const [qsalKey, qsalValue] of Object.entries(qsaValue.children)) {
                                let qsi = qsalValue.querySelectorAll('input');
                                for (const [qsilKey, qsilValue] of Object.entries(qsi)) {
                                    if (qsilValue.hasAttribute("data-uid") == true) {
                                        iValue = qsilValue.value;
                                    }
                                    if (qsilValue.hasAttribute("data-uid") == false) {
                                        newWL[iValue] = qsilValue.value;
                                    }
                                }
                            }
                        }
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
if (obj.hasOwnProperty(key)) {
  if (!Array.isArray(obj[key])) {
    obj[key] = [ obj[key] ];
  }

  obj[key].push(val);
} else {
  obj[key] = val;
}

UPD. Вынесено из комментариев:

это для массива, а у меня объект

И что? Самостоятельно одно на другое заменить - нет, никак? Вместо Array.isArray проверяйте instanceof Object. А ключ нового свойства - это количество уже существующих свойств:

if (obj.hasOwnProperty(key)) {
  if (!(obj[key] instanceof Object)) {
    obj[key] = { 0: obj[key] };
  }

  obj[key][Object.keys(obj[key]).length] = val;
} else {
  obj[key] = val;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
iNickolay
@iNickolay
Проверять на существование, прежде чем добавлять
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы