$newArr = array_filter($arr, fn($n) => explode('.', $n)[1] !== '08');
for ($i = 0, $j = 0; $i < count($arr); $i++) {
if (explode('.', $arr[$i])[1] === '08') {
$j++;
} else if ($j) {
$arr[$i - $j] = $arr[$i];
}
}
array_splice($arr, -$j, $j);
const [ showAll, setShowAll ] = useState(false);
const defaultShow = 2;
const showAllByDefault = ingredients.length <= defaultShow;
const ingredientsToShow = (showAll || showAllByDefault)
? ingredients
: ingredients.slice(0, defaultShow);
{showAllByDefault
? null
: <button onClick={() => setShowAll(val => !val)}>{showAll ? 'hide' : 'show'}</button>
}
<ul>
{ingredientsToShow.map(n => <li>{n}</li>)}
</ul>
const props = defineProps({
showBgBlue: {
type: Boolean,
default: true,
},
});
const mainClass = computed(() => props.showBgBlue ? 'bg-blueGray-50 py-12' : 'bg-white');
const sum = data =>
Array.isArray(data)
? data.reduce((acc, n) => acc + sum(n), 0)
: (+data || 0);
function sum(data) {
let result = 0;
for (const stack = [ data ]; stack.length;) {
const n = stack.pop();
if (n instanceof Array) {
stack.push(...n);
} else {
result += +n || 0;
}
}
return result;
}
true
, '0xBB'
, { valueOf: () => 666 }
и т.д.Странно, но все работает, несмотря на ошибку:
TypeError: Cannot read properties of null (reading 'insertAdjacentHTML').
arr.forEach(n => {
const el = document.getElementById(n.id);
if (el) {
el.innerHTML = `
<h2>Id: ${n.id}</h2>
<h3>${n.title}</h3>
<p>${n.body}</p>
`;
}
});
for (const { id, title, body } of arr) {
document.querySelector(`[id="${id}"]`)?.insertAdjacentHTML('beforeend', `
<h2>Id: ${id}</h2>
<h3>${title}</h3>
<p>${body}</p>
`);
}
section
изначально будет пустым):document.querySelector('section').innerHTML = arr
.map(n => `
<div id="post-${n.id}">
<h2>Id: ${n.id}</h2>
<h3>${n.title}</h3>
<p>${n.body}</p>
</div>`)
.join('');
const limit = document.querySelector('section').children.length;
const requestURL = `https://jsonplaceholder.typicode.com/posts?_limit=${limit}`;
const requestURL = 'https://jsonplaceholder.typicode.com/posts?' + Array
.from(document.querySelector('section').children, n => `id=${n.id}`)
.join('&');
new Vue({
loaves: [
this.loaves[idx] =
const elements = document.querySelectorAll('[name^=AR_AMOUNT]');
const sum = Array.prototype.reduce.call(
elements,
(acc, n) => acc + +n.value,
0
);
// или
let sum = 0;
for (const { value } of elements) {
sum += Number(value);
}
0
:const sum = (function sum(arr, i) {
return arr[i] ? parseFloat(arr[i].value) + sum(arr, i + 1) : 0;
})(elements, 0);
+
, в строку; строку отдаём в eval
; всё, сумма получена (ну, почти, если исходная коллекция элементов была пуста, то строка тоже будет пустой, так что надо не забыть подставить 0
вместо возможного undefined
, который является результатом выполнения пустой строки):const sum = eval(Array.from(elements, n => n.value).join('+')) ?? 0;
function Typewriter({ text }) {
const [ length, setLength ] = useState(0);
useEffect(() => {
setLength(0);
const interval = setInterval(setLength, 100, length => {
if (++length >= text.length) {
clearInterval(interval);
}
return length;
});
return () => clearInterval(interval);
}, [ text ]);
return <div>{text.slice(0, length)}</div>;
}
const merge = (target, ...sources) =>
sources.reduce((acc, n) => (
Object.entries(n).forEach(([ k, v ]) =>
acc[k] = v instanceof Object
? merge(acc[k] instanceof Object ? acc[k] : {}, v)
: v
),
acc
), target);
const result = merge({}, ...arrayObj);
const sorted = (data, key) => Array
.from(data, n => [ key(n), n ])
.sort(([a], [b]) => a < b ? -1 : +(a > b))
.map(n => n[1]);
const sortChildren = (el, key) =>
el.append(...sorted(el.children, key));
<button data-order="-1">От большего к меньшему</button>
<button data-order="+1">От меньшего к большему</button>
.catalog-items
(вес элемента - число внутри, умноженное на направление сортировки), кликнутой кнопке класс добавляем, у остальных убираем:const wrapper = document.querySelector('.catalog-items');
const buttons = document.querySelectorAll('[data-order]');
buttons.forEach(n => n.addEventListener('click', onClick));
function onClick({ target: t }) {
const order = +t.dataset.order;
sortChildren(wrapper, el => parseInt(el.innerText) * order);
buttons.forEach(n => n.classList.toggle('active', n === t));
}
В документации не нашёл явных примеров.
options: {
plugins: {
legend: {
onClick(e, legendItem, { chart }) {
this.legendItems.forEach((n, i) => {
chart.getDatasetMeta(i).hidden = n !== legendItem && (legendItem.hidden || !n.hidden);
});
chart.update();
},
},
},
},
nextEl: prevRef.current
const [ swiper, setSwiper ] = useState();
<Swiper
onSwiper={setSwiper}
...
- ref={prevRef}
+ onClick={() => swiper.slidePrev()}
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);