Как добавить уникальные объекты в массив json, используя javascript в postman - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь добавить объект json в массив json, но, похоже, что-то не так. что я получаю элементы массива как -

0:{}
    local:"con"
    name:"con"
    order:15
1:{}
    local:"con"
    name:"con"
    order:15

что я ожидаю -

0:{}
    local:"con"
    name:"con"
    order:15
1:{}
    local:"con2"
    name:"con2"
    order:16

Я хочу points массив должен иметь все уникальные объекты json (с очень для итерации цикла), но он заменяет все ранее добавленные json на текущий объект json (текущей итерации), и весь массив имеет одинаковые объекты json во всех позициях индекса
код -

for(var i = 0; i < machineDetails.length; i++)
{

          machine['name'] = machineDetails[i].name;
          machine['local'] = machineDetails[i].localName;
          machine['order'] = machineDetails[i].orderInLine;
          points.push(machine);
          console.log(points);
}

в дополнение к вышесказанному я попробовал points[i].push(machine);, но он тоже не работает и выдает ошибку как push property is not defined. Пожалуйста, укажите мне в правильном направлении, что мне не хватает или что мне делать?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вам нужно переместить присвоение пустого объекта внутри цикла, чтобы предотвратить ссылку на тот же объект, что приводит к одинаковым значениям внутри.

for (var i = 0; i < machineDetails.length; i++) {
    machine = {};

или даже короче:

for (var i = 0; i < machineDetails.length; i++) {
    points.push({
        name: machineDetails[i].name,
        local: machineDetails[i].localName,
        order: machineDetails[i].orderInLine
    });
}
0 голосов
/ 09 июля 2019

При использовании массивов вы можете использовать различные типы итераций, включая array.map, что, по-видимому, именно то, что вы делаете: отображение массива с именем machineDetails на новый с именем points:

const points = machineDetails.map(({ name, localName, orderInLine}) => ({
  name,
  local: localName,
  order: orderInLine,
});

Использование map, поскольку вы создаете новую область и возвращаете новый объект каждый раз, когда проблема, связанная с переопределением атрибутов объекта, на который вы уже ссылались в массиве, не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...