const tempalte = `
<span class="c56 c77 c98">текст</span>
<span class="c101">текст</span>
<span class="c111">текст</span>
<span class="c12 c30 c98">текст</span>
`;
const parser = new DOMParser();
const root = parser.parseFromString(tempalte, 'text/html');
root.querySelectorAll('.c77, .c98, .c101').forEach((element) => {
const content = document.createElement('b');
content.append(...element.childNodes);
element.replaceWith(content);
});
console.log(root.body.innerHTML);
/*
<b>текст</b>
<b>текст</b>
<span class="c111">текст</span>
<b>текст</b>
*/const template = `
<span class="c56 c77 c98">текст</span>
<span class="c101">текст</span>
<span class="c111">текст</span>
<span class="c12 c30 c98">текст</span>
`.trim();
const classNames = ['c77', 'c98', 'c101'];
let result = template;
for (const className of classNames) {
const expression = new RegExp(`<([\\w-]+)\\s*class=".*${className}.*"\\s*>(.+)</\\1>`, 'gm');
result = result.replace(expression, (match, tag, content) => `<b>${content}</b>`);
}const classNames = ['c77', 'c98', 'c101'];
const expression = new RegExp(`<([\\w-]+)\\s*class=".*(${classNames.join('|')}).*"\\s*>(.+)</\\1>`, 'gm');
const result = template.replace(expression, (match, tag, className, content) => `<b>${content}</b>`);sudo apt install zram-tools
sudo sed -i 's/^#PERCENT=.*/PERCENT=150/' /etc/default/zramswap
echo 'w- /sys/kernel/mm/lru_gen/enabled - - - - y' | sudo tee /etc/tmpfiles.d/mglru.conf
echo 'w- /sys/kernel/mm/lru_gen/min_ttl_ms - - - - 1000' | sudo tee -a /etc/tmpfiles.d/mglru.confconst slides = [
{ id: 0, img: 'путь', active: true },
{ id: 1, img: 'путь', active: false }
]После нажатия кнопки перехода, делай новый слайд активным, а все остальные переводи в active: false
function num(number) {
function number_format(number, decimals, dec_point, thousands_sep) {
number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
let n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
s = '',
toFixedFix = function (n, prec) {
let k = Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
}
if (number <= 9999 && number >= -9999) {
return number_format(number, 0, '.', '');
} else if(number <= 999999 && number >= -999999){
return number_format(number/1e3, 2, '.', '') + ' тыс. ';
} else if(number <= 999999999 && number >= -999999999){
return number_format(number/1e6, 2, '.', '') + ' млн. ';
} else {
return number_format(number/1e9, 2, '.', '') + ' млрд.';
}
}
Как правильнее было бы реализовать это?
Как увеличить FPS в системе?
Основной способ стандартный -- не перерисовывать всё, если можно этого избежать.
купил FTP сервергде же такой ужас нашел
const keys = new Set(
Object.values(data)
.map((entry) => Object.keys(entry))
.flat()
);
const properties = Object.keys(data).map((key) => [
key.split("_").shift(),
key,
]);
const result = [...keys].reduce((acc, key) => {
acc[key] = Object.fromEntries(
properties.map(([property, type]) => [property, data[type][key] ?? 0])
);
return acc;
}, {});const mappedData = Object.entries(data).reduce((acc, [type, entry]) => {
const property = type.split('_').shift();
for (const key in entry) {
acc[key] = { ...acc[key], [property]: entry[key] };
}
return acc;
}, {});
console.log(mappedData);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1
}
}
*/const result = {};
const propertyMap = Object.fromEntries(Object.keys(data).map((key) => [key.split('_').shift(), key]));
for (const property in propertyMap) {
for (const key in data[propertyMap[property]]) {
result[key] ??= {};
result[key][property] = data[propertyMap[property]][key];
}
}
for (const key in result) {
for (const property in propertyMap) {
if (property in result[key] === false) {
result[key][property] = null;
}
}
}
console.log(result);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1,
"inactive": null
}
}
*/