Добавить уникальный сгенерированный идентификатор в массив объекта json - PullRequest
0 голосов
/ 22 октября 2018

Как добавить поле uniqueId в JSON ниже.Этот массив содержит большое количество данных и нуждается в динамическом уникальном идентификаторе существующего массива.

[{"title":"Accompanying"},{"title":"Chamber music"},{"title":"Church 

music "} ......]

, поэтому это должно выглядеть следующим образом:

[{"title":"Accompanying", "uniqueId": 1},{"title":"Chamber music", "uniqueId": 2}..]

uniqueId- тип, число или идентификатор.

Примечание: не знаю «заголовок» или какие могут быть другие поля, поэтому не удалось сопоставить поля по имени.

Ответы [ 3 ]

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

Вы можете использовать map, а в функции обратного вызова используйте параметр index для создания uniqueId

item.title на самом деле не известен как его динамический массив и поэтому не может отображатьсяс конкретными именами полей

В этом случае используйте Object.keys, чтобы получить массив всех ключей.Затем зациклите его и добавьте ключ к новому объекту

let k = [{
  "title": "Accompanying"
}, {
  "title": "Chamber music"
}, {
  "title": "Church"
}]
let getArrayKey = Object.keys(k[0]);
let n = k.map(function(item, index) {
  let obj = {};
  getArrayKey.forEach(function(elem) {
    obj[elem] = item[elem];
  })
  obj.uniqueId = index + 1
  return obj;
});

console.log(n)

Также вы можете использовать оператор спреда

let k = [{
  "title": "Accompanying"
}, {
  "title": "Chamber music"
}, {
  "title": "Church"
}]

let n = k.map(function(item, index) {
  return Object.assign({}, { ...item,
    uniqueId: index + 1
  })

});

console.log(n)
0 голосов
/ 22 октября 2018

Я бы пошел на простой цикл

let myArray = [{"title":"Accompanying"},{"title":"Chamber music"},{"title":"Church music"}];
let i = 0, ln = myArray.length;
for (i;i<ln;i++){
  myArray[i].uniqueId = i+1;
}

console.log(myArray);
0 голосов
/ 22 октября 2018

Если это один раз, вы можете сделать следующее:

const newArray = oldArray.map((x, i) => ({
    // If the object is dynamic you can spread it out here and add the ID
    ...x,
    // Use the items index in the array as a unique key
    uniqueId: i,
}));

Если вы хотите использовать генератор guid (я бы рекомендовал это), просто замените i на то, что вы используетесгенерировать GUID и убедиться, что каждый раз, когда вы добавляете в коллекцию, вы генерируете новый GUID для данных.

const newArray = oldArray.map((x) => ({ ...x, uniqueId: generateGuid() }));

const yourDynamicObjects = [
    {
        title: 'A title',
        author: 'A. Author'
    },
    {
        foo: 'bar',
    },
    {
        quotient: 2,
        irrational: Math.sqrt(2)
    }
];

const updatedData = yourDynamicObjects.map((x, i) => ({ ...x, uniqueId: i, }));

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