ureech,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<div class="group">
<div data-cost="0" class="item">1</div>
<div data-id="id" data-cost="10" class="item">2</div>
<div data-cost="20" class="item">3</div>
</div>
<div class="group">
<div data-cost="0" class="item">1</div>
<div data-cost="30" class="item" data-id="id">2</div>
<div data-cost="40" class="item" data-id="test">3</div>
</div>
<div class="group">
<div data-cost="0" class="item show">4</div>
<div data-cost="50" data-id="id" class="item show">5</div>
<div data-cost="60" class="item show" data-id="test">6</div>
</div>
<script>
let items = document.querySelectorAll('.item[data-id]');
let result = {};
let obj = [...items].reduce((ob, {
dataset: {
cost,
id
}
}, i) => {
let ar = ob[id];
if (!ar) ob[id] = ar = [cost];
else {
ar.push(cost);
result[id] = ar;
}
return ob
}, {});
document.write(JSON.stringify(result))
</script>
</body>
</html>
|
На входе у меня объект.
let list = $('.pubmods__mods-list__item');
Object { 0: div.pubmods__mods-list__item, 1: div.pubmods__mods-list__item, 2: div.pubmods__mods-list__item, 3: div.pubmods__mods-list__item, 4: div.pubmods__mods-list__item, 5: div.pubmods__mods-list__item.show-always, 6: div.pubmods__mods-list__item.show-always, 7: div.pubmods__mods-list__item.show-always, 8: div.pubmods__mods-list__item.show-always, 9: div.pubmods__mods-list__item.show-always, … }
далее этот объект периберается
list.each(function(i, el) {
//тут идут разные вычисления с параметрами el.
//И мне надо тут проверять, есть ли элементы с одинаковыми dataset.id. Плюс dataset.id может и не быть. И если есть получать их dataset.cost. И эти dataset.cost будут подставляться в вычисления.
})
|
Вот напроимер dataset
dataset: DOMStringMap(5) { costPrefix → "+", modifImg → "/images/modificators/razmer.jpg", modifName → "120х200", … }
costPrefix: "+"
linkId: "07cd4e627e93c535a342a195a6da523285efffbc3c671044"
modifCost: "15000"
modifImg: "/images/modificators/razmer.jpg"
modifName: "120х200"
|
ureech,
let objId = {};
list.each(function(i, el) {
//тут идут разные вычисления с параметрами el.
//И мне надо тут проверять, есть ли элементы с одинаковыми dataset.id. Плюс dataset.id может и не быть. И если есть получать их dataset.cost. И эти dataset.cost будут подставляться в вычисления.
let id = el.dataset.id;
if (id) {
let ar = objId[id];
if (!ar) ar = objId[id] = [];
ar.push(el);
if (ar.length > 1) {
// есть совпадения, что-то делаем
}
}
})
|
Цитата:
|
| Часовой пояс GMT +3, время: 21:32. |