The useRef() Hook isn’t just for DOM refs. The “ref” object is a generic container whose current property is mutable and can hold any value, similar to an instance property on a class.
justify-content
распределяет содержимое блока вдоль главной оси, в качестве которой у вас установлена вертикальная (flex-direction: column
).align-items
. const result = arr.reduce((acc, n, i) => (
(i & 1) || acc.push(0),
acc[~-acc.length] += n,
acc
), []);
function chunked(data, chunkSize) {
return Array.prototype.reduce.call(
data,
(acc, n, i) => ((acc[i / chunkSize | 0] ??= []).push(n), acc),
[]
);
}
function sum(data, val = n => n) {
const getVal = val instanceof Function ? val : n => n[val];
return Array.prototype.reduce.call(
data,
(acc, n) => acc + getVal(n),
0
);
}
const result = chunked(arr, 2).map(n => sum(n));
isOpen
с помощью директивы v-model
, замените :is-open="item.isOpen"
на v-model:is-open="item.isOpen"
.isOpen = !isOpen
на $emit('update:isOpen', !isOpen)
. .active {
&::after {
content: "hello, world!!";
}
}
<a class="tabs-select__button" data-text="hello, world!!">
<a class="tabs-select__button" data-text="fuck the world">
.active {
&::after {
content: attr(data-text);
}
}
const flatArr = arr.flatMap(n => Array.isArray(n.DOP) ? n.DOP : []);
// или
const flatArr = Array.prototype.concat.apply([], arr.map(n => n.DOP ?? []));
// или
const flatArr = arr.reduce((acc, n) => (n.DOP && acc.push(...n.DOP), acc), []);
const unique = Object.values(Object.fromEntries(flatArr.map(n => [ n.NAME, n ])));
// или
const unique = flatArr.filter(function({ NAME: n }) {
return !(this[n] = this.hasOwnProperty(n));
}, {});
// или
const unique = flatArr.filter((n, i, a) => n === a.find(m => m.NAME === n.NAME));
function formatDate(str) {
const d = new Date(str.replace('_', ' 1, '));
d.setMonth(d.getMonth() - 1);
return d.toLocaleDateString('en-US', {
month: 'short',
year: 'numeric',
}).replace(' ', '_');
}
formatDate('Feb_2021') // "Jan_2021"
formatDate('Jan_2000') // "Dec_1999"
this.setState(({ items }) => ({
items: items.map((n, i) => ({ ...n, id: i })),
}));
state = {
items: this.props.items.map((n, i) => ({ ...n, id: i })),
}
g
на самом деле отсутствует. Смотрите внимательнее, куда вы его попытались вписать. 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>
str.match(/(?<=\. ).+(?= \(%\))/)[0]
// или
str.replace(/^.*?\. | \(%\).*$/g, '')
// или
str.split('. ').pop().split(' (%)').shift()
string value
long index = value[l];
'1'
('2'
, '3'
, ...) будет неявно преобразовано в 1
(2
, 3
, ...). Зря. Так не будет. Вы получите код соответствующего символа. Ваше счастье, коды цифровых символов расположены один за другим, в порядке возрастания соответствующих им цифр, так что достаточно вычесть код нуля, чтобы получить нужное число:long index = value[l] - '0';
const filter = (arr, str) => (arr || [])
.map(n => ({ ...n, children: filter(n.children, str) }))
.filter(n => n.name.includes(str) || n.children.length);
computed: {
filteredItems() {
return filter(this.items, this.search);
},
},
computed: {
total() {
return this.value1 * this.value2 + this.checkbox * 1000;
},
},
this.getRandomZ() не вычисляется
const getRandomPolynom = () => {
const [ A, B, C, D ] = Array.from({ length: 4 }, this.getRandomZ);
return x => A * x ** 4 + B * x ** 3 - C * x ** 2 - D * x + 10;
};
const wrapper = document.querySelector('.wrap');
const html = '<div class="item active">5</div>';
const last = wrapper.lastElementChild;
// или
const last = wrapper.querySelector(':scope > :last-child');
// или
const last = wrapper.children[wrapper.children.length - 1];
// или
const [ last ] = Array.prototype.slice.call(wrapper.children, -1);
last.insertAdjacentHTML('beforebegin', html);
// или
last.before(...new DOMParser().parseFromString(html, 'text/html').body.childNodes);
// или
wrapper.insertBefore(document.createRange().createContextualFragment(html), last);
// или
last.outerHTML = html + last.outerHTML;