Задать вопрос
SecurityYourFingers
@SecurityYourFingers
I make other things, but i know that without your

Как сформировать массив объектов?

5c12dc0aac366153397202.png

Вот мой код и он работает не совсем правильно.
var mass = [];
function queryDatabasePunish() {
    request = new Request(`SELECT punishments.num_punishment, breakdowns.coast, punishments.name_breakdown FROM breakdowns INNER JOIN punishments ON breakdowns.num_breakdown = punishments.num_breakdown WHERE (punishments.num_ptc = '${password}')`, function (err, rowCount, rows) {
        console.log(rowCount + ' row(s) вернулось из штрафов');
        PunCount = rowCount;
    });
    request.on('row', function (columns) {
        columns.forEach(function (column) {
            punishments[column.metadata.colName] = column.value;//заполнение объекта
        });
        mass.push(punishments);
        console.log(mass);
    });
    abcdef.execSql(request);
}

Он перезаписывает объекты в массиве(результат на картинке) получился массив с тремя одинаковыми объектами5c12dcba09076905808574.png

А должны быть такие записи:5c12dc0aac366153397202.png
  • Вопрос задан
  • 912 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@sergmit
думаю должно помочь:
var punishments = {};
columns.forEach(function (column) {
       punishments[column.metadata.colName] = column.value;//заполнение объекта
});
Ответ написан
Комментировать
@Vovanostm
Тут 2 проблемы -
1) объекты передаются по ссылке, и, видимо, вы изменяете все время один и тот же объект и добавляете ссылку на него в массив, а не сами поля. Вам надо добавлять копию объекта, либо, можно для простых объектов сделать добавление простых полей с помощью деструктуризации - mass.push({...punishments})
2) вместо работы с массивами, в которых все значения должны быть уникальны, лучше использовать Set
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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