const clonObj = (obj, count) => {
const objects = [];
for (let i = 0; i < count; i++) {
objects.push({ ...obj });
objects[i].id = objects[i].id + 1;
}
return [...objects];
};
const result = clonObj({id: 5}, 10);
должно получиться 10 объектов и id начинаться с 5-ки
obj
есть заранее уже поле id
!id
и не использовать цикл for
const cloneObject = (o, count = 1) => {
const objects = new Array(count).fill(o);
return objects.map((obj, index) => ({ ...obj, id: obj.id + index }));
};
const merge = require('lodash/merge');
const createList = (data = {}, countCampaigns = 1) => {
const dataObj = [{
id: data.id || defaultObj.id,
// разные другие поля
}];
const preparedObj = merge(defaultObj, dataObj);
const preparedObjList = cloneObject(preparedObj, countCampaigns);
return [...preparedObjList];
};
defaultObj
где уже заполнены поля объекта по умолчанию, но если нужно поменять какое-то поле я тогда в функции cloneObject
указываю какие поля необходимо поменять и указываю сколько похожих объектов создать ). Только id
нужно увеличивать всегда dataObj
это массив?return [...preparedObjList];
он умеет откидывать undefined, если не все свойства переданы.
merge
тоже не как мне нужно объединил объекты... У меня при таком раскладе получилось на выходе 2 объектаconst defaultObj = [
{
id: 5310,
прочие свойства: значения
},
];
const merge = require('lodash/merge');
const createList = (data = {}, count = 1) => {
const dataObj = {
id: data.id || defaultObj.id,
// разные другие поля
};
const preparedObj = merge(defaultObj, dataObj);
const preparedObjList = cloneObject(preparedObj, count);
return preparedObjList;
};
const cloneObject = (o, count) => {
const objects = new Array(count).fill(o);
return objects.map((obj, index) => ({ ...obj, id: obj.id + index }));
};
затем вызываю
const result = createList({id: 44}, 2);
console.log(result)
[{...}, {...}]
разворачиваю
0: {0: {объект со свойствами defaultObj}, id: 44, name: undefined и т.д все свойства с undefined}
const createList = (data = {}, count = 1) => {
const preparedObj = { ...defaultObj, ...data };
return cloneObject(preparedObj, count);
};