function insertAfter(source, search, insert) {
const p = source.indexOf(search);
return (p === -1
? source.slice()
: source.slice(0, p + 1).concat(insert, source.slice(p + 1))
);
}
console.log(insertAfter('Ivanov I.Petrov P. Sidorov S.', '.', '<br>'));
// а еще кроме строк можно и массивы той же функцией обрабатывать
console.log(insertAfter(['Ivanov I', '.', 'Petrov P.', ' Sidorov S.'], '.', '<br>'));
const Second = ({array}) => {
return (...)
}
аналогично этому:const Second = (props) => {
const {array} = props;
return (...)
}
что в свою очередь можно привести к этому:const Second = (props) => {
const array = props.array;
return (...)
}
но с той лишь разницей, что в оригинальном примере нет отдельной переменной props const mysql = require('some-mysql-library');
const app = express();
// ...
function getUserFromMysqlMiddleware(req, res, next) {
mysql.query('SELECT * FROM `users` WHERE `id`=? LIMIT 1', [req.query.userid]).then(([user]) => {
if(!user) {
const err = new Error('Access denied');
err.status = 403;
return next(err);
}
req.user = user;
next();
}).catch(next);
}
app.post('/some/route', getUserFromMysqlMiddleware, (req, res) => {
// Ваш код с гарантированным наличием req.user
});
app.put('/some/route', getUserFromMysqlMiddleware, (req, res) => {
// Ваш код с гарантированным наличием req.user
});
const arr = []; // создали массив
arr.push = function() { // перезаписываем конкретно его push
Array.prototype.push.apply(this, arguments); // вызвали оригинальный push со всеми аргументами
// тут делаем еще что-то
};
function genPDF() {
const blocks = document.querySelectorAll('.block');
const doc = new jsPDF();
return Promise.all(Array.prototype.map.call(blocks, el => new Promise(resolve => {
html2canvas(el, {
onrendered(canvas) {
const img = canvas.toDataURL("image/png");
doc.addImage(img, 'JPEG', 20, 20);
resolve();
}
});
}))).then(() => {
doc.save('test.pdf');
});
}
function getLabelForInput(input) {
if(input.id) {
const label = document.querySelector(`label[for="${input.id}"]`);
if(label) { return label; }
}
for(let parent = input; parent = parent.parentElement;) {
if(parent.tagName === 'LABEL') { return parent; }
}
return null;
}
Создаю сервер с nginx и ClickHouse на Ubunta в одном местеВы уверены, что одна единственная машина, нагруженная одновременно и nginx и CH и redis и php/python справится с Вашей нагрузкой?
раз в N секунд скриптом на python/php через cron кладет данные в ClickHouse
const transformProductStatusInfo = (items) => items.map(({properties, title, value}) => ({
title,
value,
properties: Object.keys(properties).map(key => ({
key,
fieldName: properties[key][0],
fieldValue: properties[key][1]
}))
}));