var o = {
value: {
orders: {
tools: [
{
tool1: 't1'
}
],
wood: [
{
wood1: 'w1',
}
],
},
}
}
var allOrders = [];
var ordersByType = o.value?.orders || {};
Object.keys(ordersByType).forEach((type) => {
ordersByType[type].forEach((order) => {
allOrders.push({
...order,
type,
});
});
});
o.value.orders = allOrders;
constructor(){
this.MyVariable = {x: 0, y: 0};
this.MyFunc = this.MyFunc.bind(this);
}
Как можно побороть проблему, оптимизировать может быть что-то?Открыть DevTools на вкладке Performance и затрейсить рендеринг. Смотреть в получившиеся графики, искать, куда уходит время и ресурсы.
document.getElementById('id').value
, потом что в document.getElementById('id')
, если в value пусто.выводит новую формуВангую, что в итоге у вас куча одинаковых форм и, соответственно, куча инпутов с
id="id"
, что, естественно, недопустимо. const anchors = [];
[...document.querySelectorAll('a')].forEach(($link) => {
let href = $link.getAttribute(`href`);
if (href.startsWith(window.location.href)) {
href = href.split(window.location.href).join(``);
}
if (href.startsWith(window.location.pathname)) {
href = href.split(window.location.pathname).join(``);
}
if (href !== `#` && href.startsWith(`#`)) {
anchors.push({
href,
text: $link.textConent,
});
}
});
console.log(anchors);
let users = [];
let nameFilter = ``;
// TODO: Тут вы реализуете изменение значения nameFilter из какого-то поля и после этого снова вызываете render()
const render = () => {
document.body.innerHTML = users
.filter((item) => !nameFilter || item.name.toUpperCase().includes(nameFilter.toUpperCase())
.map((item) => `<span class="name">${item.name}</span>`).join(``));
}
fetch(`users.json`)
.then((res) => res.json())
.then((data) => users = data)
.then(render);
получается так, что кнопка добавляется только к последней карточкеНа самом деле нет, кнопка последовательно добавляется к каждой карточке. Но поскольку вы используете один и тот же элемент, а не создаёте в цикле отдельную кнопку для каждой карточки, она при каждой последующей вставке переносится на новое место и в итоге остаётся у последней карточки.
let panesList = document.querySelectorAll('.pane');
for (let pane of panesList) {
let button = document.createElement('button');
button.classList.add('remove-button');
button.textContent = '[X]';
pane.append(button);
}