{
...
"banners": [{
"index": 2 // Banner 1
}, {
"index": 2 // Banner 2
}, {
"index": 2 // Banner 3
}, {
"index": 5 // Banner 4
}],
...
}
const $elems = document.querySelector('.js-cards').children;
let banners = [];
[...$elems].forEach(($elem, index) => {
if ( !('card' in $elem.dataset) ) {
banners.push({
elem: $elem,
index: index - banners.length
})
}
});
console.log(banners);
reduce()
в передаваемом объекте добавьте поле для передачи индекса баннера.i
и сохранять его в объекте;const container = document.querySelector(".js-cards");
const cards = [...container.children].reduce(function (obj, item, i) {
if ("card" in item.dataset) {
obj[item.dataset.card] = (obj[item.dataset.card] || []).concat(item);
obj["all"] = (obj["all"] || []).concat(item);
if (obj.hasOwnProperty('bannerIndex')) delete obj.bannerIndex;
} else {
if (! obj.hasOwnProperty('bannerIndex')) obj.bannerIndex = i;
obj["banners"] = (obj["banners"] || []).concat({ item: item, index: obj.bannerIndex });
}
return obj;
}, {});
console.log(cards);