$('.openFormPopup').click(e => $('#btn-clicked').val(e.target.dataset.title));
Здесь только регуляркой или как?
function incrementNumberInString(str) {
for (let i = 0, iNum = -1; i < str.length; i++) {
if ('0123456789'.includes(str[i])) {
if (iNum === -1 && str[i - 1] === '[') {
iNum = i;
}
} else if (iNum !== -1 && str[i] === ']') {
return str.slice(0, iNum) + (Number(str.slice(iNum, i)) + 1) + str.slice(i);
} else {
iNum = -1;
}
}
return str;
}
str.replace(/(?<=\[)\d+(?=\])/, m => ++m)
// или
str.replace(/\[\d+\]/, m => '[' + (m.slice(1, -1) - -1) + ']')
// или
str.replace(/\[(\d+)\]/, (m, g1) => `[${-~g1}]`)
как лучше реализовать функционал, чтобы иконка была одна, а в нужных компонентах мы докидывали цвет?
выводит побуквенно
v-for
так и перебирает - "побуквенно". То есть, значениями user являются строки единичной длины. Ну а свойств id, name, price и т.д. у строк нет, отсюда пустота там, где вы выводите свойства элементов users. почему не удаляется item, а добавляется?
slice(0, -1)
) плюс полная копия (slice(0)
).deleteItem = id => {
this.setState(({ todoData }) => ({
todoData: todoData.filter(n => n.id !== id),
}));
}
const getFreeDomainsCount = arr => arr
.map(n => n.split('@')[1])
.filter(n => freeEmailDomains.includes(n))
.reduce((acc, n) => (++acc[n], acc), Object.fromEntries(freeEmailDomains.map(n => [ n, 0 ])));
const obj = arr.find(n => n.id === newObj.id);
if (obj) {
Object.assign(obj, newObj);
} else {
arr.push(newObj);
}
PHPSESSID=(.*?);
.hidden {
transform: scale(0);
}
.item {
transition: transform 0.5s;
}
document.querySelectorAll('.item').forEach(n => n.classList.remove('hidden'));
mounted() {
this.cropper = new Cropper(this.$refs.image, {
zoomable: false,
scalable: false,
aspectRatio: 1,
});
},
methods: {
selectFile(e) {
const file = (e.target.files || e.dataTransfer.files)[0];
if (file) {
const reader = new FileReader();
reader.onload = e => this.cropper.replace(e.target.result);
reader.readAsDataURL(file);
}
},
},
let
map = null,
marker = null;
document.addEventListener('click', function(e) {
if (!e.target.classList.contains('contacts__address--link')) {
return;
}
e.preventDefault();
const
addressData = e.target.closest('.js-address').dataset,
coord = [ addressData.longtitude, addressData.latitude ];
if (!map) {
map = new ymaps.Map('map', {
center: coord,
zoom: 17,
});
marker = new ymaps.Placemark(coord);
map.geoObjects.add(marker);
map.behaviors.disable('scrollZoom');
} else {
map.setCenter(coord);
marker.geometry.setCoordinates(coord);
}
});
const groupedArr2 = arr2.reduce((acc, n) => {
(acc[n.parent_id] = acc[n.parent_id] || []).push(n);
return acc;
}, {});
arr1.forEach(n => n.arr2 = groupedArr2[n.id] || []);
const newArr1 = arr1.map(n => ({ ...n, arr2: groupedArr2[n.id] || [] }));
$('.modification').on('change', function() {
const sum = $('[type="radio"]:checked', this)
.siblings('.radio__text')
.get()
.reduce((acc, n) => acc + +$(n).text(), 0);
$('p span').text(sum);
}).trigger('change');
const container = document.querySelector('.modification');
container.addEventListener('change', e => {
const sum = Array.prototype.reduce.call(
e.currentTarget.querySelectorAll('[type="radio"]:checked'),
(acc, n) => acc + +n.closest('.radio').querySelector('.radio__text').innerText,
0
);
document.querySelector('p span').innerText = sum;
});
container.dispatchEvent(new Event('change'));