const columns = [ '#', ...new Set(persons.flatMap(Object.keys)) ];
document.body.insertAdjacentHTML('beforeend', `
<table>
<thead>
<tr>${columns.map(col => `
<th>${col}</th>`).join('')}
</tr>
</thead>
<tbody>${persons.map((person, i) => `
<tr>${columns.map((col, j) => `
<td>${j ? person[col] ?? '-' : i}</td>`).join('')}
</tr>`).join('')}
</tbody>
</table>
`);
const table = document.createElement('table');
table.createTHead().insertRow().append(...columns.reduce((acc, col) => (
(acc[acc.length] = document.createElement('th')).textContent = col,
acc
), []));
persons.forEach(function(person, i) {
const tr = this.insertRow();
columns.forEach((col, j) => tr.insertCell().textContent = j ? person[col] ?? '-' : i);
}, table.createTBody());
document.body.append(table);
$addres.val("Мои данные").change();
.change()
на [0].dispatchEvent(new Event('input'))
. const find = (data, key) => Object
.entries(data instanceof Object ? data : {})
.reduce((found, [ k, v ]) => found ?? (k === key ? v : find(v, key)), null);
function find(data, key) {
for (const stack = [ data ]; stack.length;) {
const n = stack.pop();
if (n?.hasOwnProperty(key)) {
return n[key];
}
stack.push(...Object.values(n ?? {}));
}
return null;
}
const $section = $('.section').on('click', () => $section.addClass('opened'));
$section.find('.close').on('click', e => {
e.stopPropagation();
$section.removeClass('opened');
});
// или
const section = document.querySelector('.section');
section.addEventListener('click', () => section.classList.add('opened'));
section.querySelector('.close').addEventListener('click', e => (
e.stopPropagation(),
section.classList.remove('opened')
));
const $section = $('section').click(e => {
$section.toggleClass('opened', !$(e.target).is('.close'));
});
// или
document.querySelector('.section').addEventListener('click', e => {
e.currentTarget.classList.toggle('opened', !e.target.matches('.close'));
});
Object.values(orders.reduce((acc, n) => {
const date = n.date.split(' ')[0];
((acc[date] ??= {
date,
documents: {},
}).documents[n.docTypesName] ??= {
date: n.date,
docId: n.docId,
docTypesName: n.docTypesName,
products: [],
}).products.push({
name: n.name,
price: n.price,
image: n.image,
qunatity: n.quantity,
});
return acc;
}, {})).map(n => (n.documents = Object.values(n.documents), n))
async function test() {
let result = null;
do {
result = await camel() || await new Promise(r => setTimeout(r, 1000));
} while (!result);
return result;
}
import { Lazy } from 'swiper';
. Этого вы не сделали.SwiperCore.use([ Lazy ]);
. Этого вы не сделали.<Swiper lazy={true}>
. Этого вы не сделали.swiper-lazy
, атрибут src
заменить на data-src
. Ну, хоть это у вас есть. state: {
characters: [],
page: 0,
pages: 0,
},
mutations: {
setCharacters: (state, { characters, pages, page }) =>
Object.assign(state, { characters, pages, page }),
},
actions: {
async fetchCharacters({ commit }, page = 1) {
try {
const { data: { info, results } } = await axios.get(`${BASE_URL}?page=${page}`);
commit('setCharacters', {
page,
pages: info.pages,
characters: results,
});
} catch (e) {
console.error(e);
}
},
},
computed: {
currentPage: {
get() {
return this.$store.state.page;
},
set(page) {
this.$store.dispatch('fetchCharacters', page);
},
},
},
<el-pagination
v-model:current-page="currentPage"
:page-count="$store.state.pages"
layout="prev, pager, next"
background
/>
const flatten = arr => [].concat(...arr.map(n => Array.isArray(n) ? flatten(n) : n));
// или
function flatten(arr) {
const result = [];
for (const n of arr) {
if (n?.constructor === Array) {
[].push.apply(result, flatten(n));
} else {
result.push(n);
}
}
return result;
}
function flatten(arr) {
const result = [];
const stack = [];
for (let i = 0; i < arr.length || stack.length; i++) {
if (i === arr.length) {
[ i, arr ] = stack.pop();
} else if (arr[i] instanceof Array) {
stack.push([ i, arr ]);
[ i, arr ] = [ -1, arr[i] ];
} else {
result.push(arr[i]);
}
}
return result;
}
// или
function flatten([...arr]) {
for (let i = 0; i < arr.length; i++) {
const n = arr[i];
if (n?.[Symbol.iterator] && typeof n !== 'string') {
arr.splice(i--, 1, ...n);
}
}
return arr;
}
words.some(n => str.includes(n))
const openSelector = '.block__item';
const closeSelector = '.close';
const itemSelector = '.popup';
const activeClass = 'popup--active';
// делегирование, общий обработчик клика - для открытия и закрытия сразу,
// назначается один раз для всех элементов;
// связь кнопок открытия попапов с попапами через data-атрибут
document.addEventListener('click', ({ target: t }) => {
let item = t.closest(closeSelector)?.closest(itemSelector);
if (!item) {
const open = t.closest(openSelector);
if (open) {
item = document.querySelector(`${itemSelector}.${open.dataset.popup}`);
}
}
item?.classList.toggle(activeClass);
});
// или, отдельные обработчики клика для открытия и закрытия,
// назначаются каждому элементу индивидуально;
// связь кнопок открытия попапов с попапами через индексы
const open = [...document.querySelectorAll(openSelector)];
const close = document.querySelectorAll(closeSelector);
const items = document.querySelectorAll(itemSelector);
const onOpenClick = e => items[open.indexOf(e.currentTarget)].classList.add(activeClass);
open.forEach(n => n.addEventListener('click', onOpenClick));
const onCloseClick = e => e.currentTarget.closest(itemSelector).classList.remove(activeClass);
close.forEach(n => n.addEventListener('click', onCloseClick));
params = format({
params_list = Object.values(params) console.log(params_list) for (var v in params_list) {s=s+v+'='+params[v]+'&'}
function format(params, method) {
return `https://api.vk.com/method/${method}?${new URLSearchParams(params)}`;
}
console.log(format({ access_token, version }, method));
const sum = arr.reduceRight((acc, n) => n && acc + n, 0);
let sum = 0;
for (let i = 0; arr[i]; sum += arr[i++]) ;
let sum = 0;
for (const n of arr) {
if (!n) {
break;
}
sum += n;
}
const sum = (function sum(arr, i = 0) {
return arr[i] ? arr[i] + sum(arr, i + 1) : 0;
})(arr);
to
элемент списка начинает работать как ссылка - внутри v-list-item
будет создаваться router-link
, который в вашем случае создать невозможно, по причине отсутствия роутера. Ну и всё, дальше выяснять, что конкретно и почему не работает - не интересно.v-model
. Если через v-model
- не надо пытаться указывать to
. for i, n in enumerate(result):
if n[3] == 10640:
n = list(n)
n[3] = 'Вход'
result[i] = tuple(n)
result = [ (*n[:3], 'Вход') if n[3] == 10640 else n for n in result ]
Array
одно число, будет создан (будет попытка создания - отрицательные и нецелые числа приведут к ошибке) массив указанной длины. Метод push
может принимать несколько значений, а возвращает - новую длину массива, после добавления элементов. Т.е., в массив из трёх элементов добавили ещё четыре, и получили длину.