const result = {};
const arr = [{ name: "cat" }, { name: "cat" }];
arr.forEach(function(item){
if(result[item.name]) {
result[item.name].count += 1;
} else {
result[item.name] = {...item, count: 1};
}
})
console.log(result) // { cat: { name: 'cat', count: 2 } }
console.log(Object.values(result)) // [{ name: "cat", count: 2 }]
console.log(arr) // [{ name: "cat" }, { name: "cat" }];
<div style=" vertical-align: middle; width: 100%; display: inline-block;">
<div class="eshe_odin_div"> <!-- это start -->
<div class="weight_title" style="text-align: left; margin: 0 10px;">Вес г:</div>
<div class="weight">1</div>
</div> <!-- это end -->
....
</div>
const data = [
{
id: 1,
name: "краски"
},
{
id: 1,
name: "краски"
},
{
id: 2,
name: "краски"
},
{
id: 1,
name: "краски"
},
]
Object.values(data.reduce((acc, item) => {
const { id } = item
if(!acc.hasOwnProperty(id)) acc[id] = { ...item, count: 1};
else acc[id].count += 1
return acc
}, {}))
undefined
, вместо которого с помощью nullish coalescing подставляем просто цену. А чтобы не копипастить извлечение цены, вынесем его в отдельную функцию, которую, как и сам сортируемый массив, можно сделать параметром функции сортировки.const sorted = (arr, key) => arr
.map(n => [ n, key(n) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0]);
const sortedArr = sorted(arr, n => -(n.price.new ?? n.price).replace(/\D/g, ''));
Я так понимаю надо какой-то фильтр применить для отображения?
filters: {
numberOnly: val => /^\d+$/.test(val) ? val : '',
},
<div v-for="n in squares">
{{ n | numberOnly }}
</div>
<div v-for="n in squares">
{{ Number.isNaN(+n) ? '' : n }}
</div>
<div v-for="(n, i) in squares">
{{ i % 11 ? '' : n }}
</div>
data: () => ({
itemsToShow: [...Array(10)].map((n, i) => `${i + 1}`),
...
}),
<div v-for="n in squares">
{{ itemsToShow.includes(n) ? n : '' }}
</div>
data: () => ({
active: null,
}),
<div class="item" v-for="i in 5">
<div class="parent" @click="active = active === i ? null : i">
<div class="child" :class="active === i ? 'green' : 'red'">{{ i }}</div>
</div>
</div>
data: () => ({
items: Array(5).fill(false),
}),
<div class="item" v-for="(n, i) in items">
<div class="parent" @click="$set(items, i, !n)">
<div class="child" :class="{ green: n, red: !n }">{{ i + 1 }}</div>
</div>
</div>
props: [ 'text' ],
data: () => ({
active: 0,
}),
<div class="item">
<div class="parent" @click="active ^= 1">
<div class="child" :class="[ 'red', 'green' ][active]">{{ text }}</div>
</div>
</div>
data: () => ({
items: Array.from({ length: 5 }, (_, i) => `item #${-~i}`),
}),
<v-item v-for="n in items" :text="n"></v-item>
v-model
чекбоксов. Вычисляемое свойство, управляющее выбором всех чекбоксов, переписываете следующим образом: в геттере сравниваете длины массивов всех элементов и выбранных, в сеттере устанавливаете значение вычисляемого свойства выбранных элементов. Например. this.cities1 = [
{ city: 'Москва', cityCode: 'moskva54', views: '53М', visites: '1,1M', isActive: true },
{ city: 'Владимир', cityCode: 'vladimir', views: '23М', visites: '1,2M', isActive: false }
];
this.cities1 = {
'Москва': { city: 'Москва', cityCode: 'moskva54', views: '53М', visites: '1,1M', isActive: true },
'Владимир': { city: 'Владимир', cityCode: 'vladimir', views: '23М', visites: '1,2M', isActive: false }
};