Если массив включает в себя 2 одинаковых объекта, измените значения 2-го (или 3-го, 4-го) объекта - PullRequest
0 голосов
/ 01 октября 2018

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

{
      "id": 702361206839,
      "title": "Misanthropy Club Tee",
      "handle": "misanthropy-club-tee",
      "body_html": "<div></div>",
      "published_at": "2018-06-25T21:41:55+01:00",
      "created_at": "2018-06-25T21:41:55+01:00",
      "updated_at": "2018-09-17T14:24:50+01:00",
      "vendor": "J.Parré",
      "product_type": "",
      "tags": [
        "T-Shirts"
      ]
}

Если я помещу этот же объект в массив, я хочу иметь возможность изменить ключ идентификатора, чтобы значение было 702361206839-2, если я добавлю еще один, тогда 702361206839-3 и так далее.Первый объект, который я помещаю в массив, остается неизменным.

Спасибо

1 Ответ

0 голосов
/ 01 октября 2018

Просто сохраняйте карту id, которая была помещена в массив с ключом, так как id выдвигается, а значение - это число объектов, уже выдвинутых.

var map = {};
var arr = [];

Теперь давайте предположим, чтообъект, который вы нажимаете: obj

var obj = {
      "id": 702361206839,
      "title": "Misanthropy Club Tee",
      "handle": "misanthropy-club-tee",
      "body_html": "<div></div>",
      "published_at": "2018-06-25T21:41:55+01:00",
      "created_at": "2018-06-25T21:41:55+01:00",
      "updated_at": "2018-09-17T14:24:50+01:00",
      "vendor": "J.Parré",
      "product_type": "",
      "tags": [
        "T-Shirts"
      ]
};

Перед каждым push-проверкой проверьте, существует ли он на карте, если это так, измените объект id на нужный вам формат.

var id = obj.id;
if(map[obj.id]) {
    obj.id = obj.id + '-' + map[obj.id];
} else {
    map[obj.id] = 1;
}

arr.push(obj);
map[id] += 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...