computed: {
grouped() {
return this.arr.reduce((acc, n) => ((acc[n.group] ||= []).push(n), acc), {});
},
},
<v-expansion-panels>
<v-expansion-panel v-for="(items, groupName) in grouped">
<v-expansion-panel-header>{{ groupName }}</v-expansion-panel-header>
<v-expansion-panel-content>
<div v-for="n in items">{{ n.name }}</div>
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
HTMLElement.prototype.waitFor = function(event_name) {
if (event_name) {
return new Promise((res, rej) => {
const listener = function() {
res()
this.removeEventListener(event_name, listener)
};
this.addEventListener(event_name, listener);
})
} else {
throw 'No event passed to waitFor method!';
}
}
async function foo() {
const start = new Date();
await document.querySelector('body').waitFor('click');
console.log('uspeshno dojdalis clicka, jdali celih ' + ((new Date().getTime() - start.getTime())/1000) + ' sekund');
}
foo();
axios.get(ENDPOINT + '/api/' + API_METHOD, {
params: {
id
}
})
.catch
...
getUser(id)
. В неё выносится вся логика по работе с запросом, определение маршрутов АПИ, обработка ошибки и так далее. Наружу торчит только одна функция и параметр.selectDaysRange(days) {
this.selected = [];
const endDate = moment(this.now).subtract(days, 'days').format('YYYY-MM-DD');
this.selected.push(endDate, this.startDate);
},
update
, а родитель его поймал и что-то сделал.provide
, дети делают inject
и таким образом держат общий набор данных\методов.ref
тоже можно, но тут следует продумать архитектуру с публичными и внутренними методами, чтоб поддержка не превратилась в ад. arr
.map(a => a.items)
.flat()
.filter(item => [9, 10].includes(item.id))
const ids = [ 9, 10 ];
const items = arr.flatMap(n => n.items).filter(n => ids.includes(n.id));
const arr = [
{
name: 'test1',
koef: 1,
id: 1,
age: 23
},
{
name: 'test2',
koef: 1,
id: 2,
age: 23
},
{
name: 'test3',
koef: 2,
id: 3,
age: 23
},
{
name: 'test4',
koef: 2,
id: 4,
age: 23
},
{
name: 'test5',
koef: 3,
id: 5,
age: 23
},
{
name: 'test6',
koef: 3,
id: 6,
age: 23
},
];
const createMap = (array, key) => new Map(array.map(entry => [entry[key], entry]));
const map = createMap(arr, 'name');
console.log(map);
/*
Map(6) {
'test1' => { name: 'test1', koef: 1, id: 1, age: 23 },
'test2' => { name: 'test2', koef: 1, id: 2, age: 23 },
'test3' => { name: 'test3', koef: 2, id: 3, age: 23 },
'test4' => { name: 'test4', koef: 2, id: 4, age: 23 },
'test5' => { name: 'test5', koef: 3, id: 5, age: 23 },
'test6' => { name: 'test6', koef: 3, id: 6, age: 23 }
}
*/
map.get('test6').koef = map.get('test1').koef;
console.log(map);
/*
Map(6) {
'test1' => { name: 'test1', koef: 1, id: 1, age: 23 },
'test2' => { name: 'test2', koef: 1, id: 2, age: 23 },
'test3' => { name: 'test3', koef: 2, id: 3, age: 23 },
'test4' => { name: 'test4', koef: 2, id: 4, age: 23 },
'test5' => { name: 'test5', koef: 3, id: 5, age: 23 },
'test6' => { name: 'test6', koef: 1, id: 6, age: 23 }
}
*/