data: () => ({
maxlen: 10,
items: [
'hello, world!!',
'fuck the world',
'fuck everything',
'1234567890',
'Lorem ipsum dolor sit amet, consectetur adipiscing elit,',
],
}),
methods: {
short1: (str, maxlen) => str.length <= maxlen ? str : str.slice(0, maxlen) + '...',
short2: (str, maxlen) => str.substring(0, maxlen) + (str.charAt(maxlen) && '...'),
short3: (str, maxlen) => str.replace(RegExp(`(.{${maxlen}}).+`), '$1...'),
short4: (str, maxlen) => str.replace(RegExp(`(?<=.{${maxlen}}).+`), '...'),
},<input type="range" min="1" max="20" v-model="maxlen">
<span>{{ maxlen }}</span>
<div v-for="n in items">
<div v-text="short1(n, maxlen)"></div>
<div v-html="short2(n, maxlen)"></div>
<div :text-content.prop="short3(n, maxlen)"></div>
<div>{{ short4(n, maxlen) }}</div>
</div>
const [ zero, one, two, three, four, five, six, seven, eight, nine ] = Array.from(
{ length: 10 },
(_, i) => f => f instanceof Function ? f(i) : i
// или
// (_, i) => f => f?.(i) ?? i
);
const plus = a => b => b + a;
const minus = a => b => b - a;
const times = a => b => b * a;
const dividedBy = a => b => b / a | 0;
const sortDigits = num => +[...`${num}`].sort((a, b) => b - a).join('');const sortDigits = num => ''.concat.apply('', num.toString().split('').sort().reverse()) - 0;const sortDigits = num => Number(Array
.from('' + num)
.reduce((acc, n) => (acc[n]++, acc), Array(10).fill(0))
.reduceRight((acc, n, i) => acc + String(i).repeat(n), '')
);const sortDigits = num => Array
.prototype
.reduce
.call(String(num), (acc, n) => ((acc[9 - n] ??= []).push(n | 0), acc), [])
.flat()
.reduce((acc, n) => acc * 10 + n, 0);
from collections import Counter
item = Counter(arr).most_common(1)[0][0]
computed: {
columns() {
return Object.keys(this.fedresurs.find(n => n.items.length)?.items[0] ?? {});
},
},<table v-for="messages in fedresurs">
<caption>{{ messages.title }}</caption>
<thead>
<tr>
<th v-for="column in columns">{{ column }}</th>
</tr>
</thead>
<tbody>
<tr v-for="item in messages.items">
<td v-for="column in columns">{{ item[column] }}</td>
</tr>
</tbody>
</table>
products.insert(contentsOf: drinks, at: 0).for n in drinks.reversed() {
products.insert(n, at: 0)
}
// или
for i in (0 ..< drinks.count) {
products.insert(drinks[i], at: i)
}
Использую yandex-map@beta
пытаюсь изменить параметр zoom в YandexMap, но не работает, и что-то мне подсказывает, что не всё так просто
setup() {
...
let map = null;
return {
...
onCreate: e => map = e,
updateZoom: z => map.setZoom(Math.max(1, Math.min(19, map.getZoom() + z))),
};
},<yandex-map
...
@created="onCreate"
/>
...
<button @click="updateZoom(+1)">+</button>
<button @click="updateZoom(-1)">-</button>
срабатывает дважды, а в последующие разы увеличивается в разы
useEffect(() => { window.addEventListener('keydown', onKeyPress); }, [focus])
useEffect(() => {
const onKeyDown = e => {
if (e.key === 'ArrowRight') {
setFocus(focus => focus + 1);
}
};
window.addEventListener('keydown', onKeyDown);
return () => window.removeEventListener('keydown', onKeyDown);
}, []);
state = {
phones: [
{ id: 1, title: '', number: '' },
],
}
onChange = ({ target: { value, name, dataset: { index } } }) => {
this.setState(({ phones }) => ({
phones: phones.map((n, i) => +index === i
? { ...n, [name]: value }
: n
),
}));
}
addPhone = () => {
this.setState(({ phones }) => ({
phones: [
...phones,
{
id: 1 + Math.max(...phones.map(n => n.id)),
title: '',
number: '',
},
],
}));
}
delPhone = ({ target: { dataset: { index } } }) => {
this.setState(({ phones }) => ({
phones: phones.filter((n, i) => i !== +index),
}));
}
render() {
return (
<div>
{this.state.phones.map((n, i) => (
<div key={n.id}>
<input name="title" data-index={i} value={n.title} onChange={this.onChange} />
<input name="number" data-index={i} value={n.number} onChange={this.onChange} />
{i ? <button data-index={i} onClick={this.delPhone}>x</button> : null}
</div>
))}
<button onClick={this.addPhone}>Add</button>
</div>
);
}
data: () => ({
currencies: [
{ title: 'рубль', rate: 1, val: 0 },
{ title: 'доллар', rate: 62.65, val: 0 },
{ title: 'евро', rate: 60.90, val: 0 },
],
}),
methods: {
onInput({ rate, val }) {
this.currencies.forEach(n => n.val = val * rate / n.rate);
},
},<div v-for="n in currencies">
<input
v-model.number="n.val"
@input="onInput(n)"
type="number"
min="0"
>
{{ n.title }}
</div>
Что я делаю не так
как решить проблему?
{ LikeIcon } ---> <LikeIcon />.
const statsMeta = [
{ title: 'отредактированные', count: item => +item.edited },
{ title: 'неотредактированные', count: item => +!item.edited },
{ title: 'всего', count: () => 1 },
];
const statsData = allMessages.reduce((acc, n) => (
statsMeta.forEach((m, i) => acc[i] += m.count(n)),
acc
), Array(statsMeta.length).fill(0));
console.log(statsMeta.map((n, i) => `${n.title}: ${statsData[i]}`).join('\n'));
const classPrefix = 'modal--';Array.from(el.classList).forEach(n => el.classList.toggle(n, !!n.indexOf(classPrefix)));el.classList.remove(...[...el.classList].filter(n => n.startsWith(classPrefix)));for (let i = el.classList.length; i--;) {
if (el.classList[i].search(classPrefix) === 0) {
el.classList.remove(el.classList[i]);
}
}el.classList.value = el.classList.value
.split(' ')
.filter(RegExp.prototype.test.bind(RegExp(`^(?!${classPrefix})`)))
.join(' ');el.className = el.className.replace(RegExp(`(^| )${classPrefix}\\S*`, 'g'), '').trim();
const result = arr1.filter(function(n) {
return !this.has(n[0]);
}, new Set(arr2.map(n => n[0])));function diff(data1, data2, compare = (a, b) => a === b) {
const arr = Array.isArray(data2) ? data2 : [...data2];
const result = [];
for (const n of data1) {
if (!arr.some(m => compare(m, n))) {
result.push(n);
}
}
return result;
}
const result = diff(
arr1,
arr2,
(a, b) => a.length === b.length && a.every((n, i) => Object.is(n, b[i]))
);const diff = function*(data1, data2, keys = n => n) {
const tree = new Map;
for (const n of data2) []
.concat(keys(n))
.reduce((p, c) => p.set(c, p.get(c) ?? new Map).get(c), tree)
.set(this, true);
for (const n of data1) {
if (![].concat(keys(n)).reduce((p, c) => p?.get(c), tree)?.get(this)) {
yield n;
}
}
}.bind(Symbol());
const result = [...diff(arr1, arr2)];
const result = arr2.map(function(n) {
return Object.fromEntries(this.map(m => [ m[1], n[m[0]] ]));
}, arr1.flatMap(Object.entries));const keys = Object.entries(Object.assign({}, ...arr1));
const result = arr2.map(n => keys.reduce((acc, m) => (acc[m[1]] = n[m[0]], acc), {}));
const [ todos, setTodos ] = useState(() => {
let todos = null;
try {
todos = JSON.parse(localStorage.getItem('todos'));
} catch (e) {};
return Array.isArray(todos) ? todos : [];
});setTodos([ ...todos, { id: Date.now(), complete: false, title: value, }, ]); localStorage.setItem("todos", JSON.stringify(todos));
useEffect(() => {
localStorage.setItem('todos', JSON.stringify(todos));
}, [ todos ]);