Propozycja , (użyłem: array.find(...) )
<pre></pre>
const pre = document.querySelector('pre');
const arr = [
{id:2523,name:'asd'},
{id:2525,name:'asd'},
{id:2526,name:'asd'},
{id:2535,name:'asd'},
{id:2532,name:'asd'},
{id:2533,name:'asd'},
{id:2527,name:'asd'}
];
// ------------------------------------------------------------
arr.sort((a, b) => a.id - b.id);
const [start, end] = [arr[0].id + 1, arr[arr.length - 1].id];
for (let i=start; i<end; ++i) {
if (! arr.find(elem => elem.id === i)) {
arr.push({ id: i, name: '' });
}
}
arr.sort((a, b) => a.id - b.id);
// ------------------------------------------------------------
let html = JSON.stringify(arr).slice(1).slice(0, -1);
html = html.replace(/},/g, '},\n').replace(/{/g, ' {');
pre.innerHTML = `const arr = [\n${html}\n];`;
/* ... lub ... :-)
let html = JSON.stringify(arr).replace('[', '[\n').replace(']', '\n];');
html = html.replace(/},/g, '},\n').replace(/{/g, ' {');
pre.innerHTML = `const arr = ${html}`;
*/
[ edit ]
const arr = [
{id:2523,name:'asd'},
{id:2525,name:'asd'},
{id:2526,name:'asd'},
{id:2535,name:'asd'},
{id:2532,name:'asd'},
{id:2533,name:'asd'},
{id:2527,name:'asd'}
];
// ------------------------------------------------------------
const [start, end] = [ Math.min(...arr.map(({ id }) => id)),
Math.max(...arr.map(({ id }) => id)) ];
for (let i=start; i<end; ++i) {
if (! arr.find(elem => elem.id === i)) {
arr.push({ id: i, name: '' });
}
}
arr.sort((a, b) => a.id - b.id);
// ------------------------------------------------------------
let html = JSON.stringify(arr).slice(1).slice(0, -1);
html = html.replace(/},/g, '},\n').replace(/{/g, ' {');
pre.innerHTML = `const arr = [\n${html}\n];`;