function replace($text, $word, $replacements) {
$r = $replacements;
$new_text = $text;
$replacement = null;
$pattern = "/$word/";
while(true) {
$replacement = $r[0];
$new_text = preg_replace(
$pattern,
$replacement,
$new_text,
1, // заменяем 1 раз
$count
);
if(!$count) return $new_text;
// ротируем замены
$r = array_merge(array_slice($r, 1), [$replacement]);
}
}
$replaced = replace(
"First word. Second word. Third word. Forth word.",
"word",
["apple", "banana", "watermelon"]
);
print_r($replaced);
// First apple. Second banana. Third watermelon. Forth apple.
const enumChildNodes = (node, acc = []) => {
if (node.children.length === 0) // дошли до последнего уровня
return acc.concat(`${node.tagName} ${node.innerText}`);
return acc.concat(
...[...node.children].map(node => enumChildNodes(node, acc))
)
}
enumChildNodes(document.body).forEach(item => console.log(item))
const [nameValue, setNameValue] = useState(name || "");
<TextField
...
value={nameValue}
...
/>
const topics = [
{
topicName: 'Hello there',
messages: [{...}, {...}]
},
{
topicName: 'Need help',
messages: [{...}, {...}]
},
]
const msgIdx= topics.map(topic => topic.messages.map(msg => msg.id));
[ [], [], ...]
const msgIdx= topics.map(topic => topic.messages.map(msg => msg.id))
.reduce((acc, idList) => acc.concat(idList), [])
function getOddList (count, current = 1, acc = []) {
if (count == 0) return acc;
return getOddList(count - 1, current + 2, acc.concat(current))
}
function getOddList (count) {
function iter(n, current, acc) {
if (n == count) return acc;
return iter(n + 1, current + 2, acc.concat(current))
}
return iter(0, 1, []);
}
copy[j]={};
if (!copy[j]) copy[j]={};
(function ()
{
'use strict';
if (!confirm('Удалить все лайки?')) return;
var deleteLikeLink = document.body.querySelectorAll('.like_button_icon');
var i = 0;
var interval = setInterval(function() {
deleteLikeLink[i].click();
i++;
if(i > deleteLikeLink.length - 1) {
clearInterval(interval);
alert(deleteLikeLink.length + ' likes deleted');
}
}, 1000);
}());
getData(setData); // асинхронный запрос, т.е. данные будут получены не сразу
console.log(postsData); // выполняется сразу после вызова getData, не дожидаясь загрузки данных, поэтому undefined
getData(data => {
...
});
Вот метод, его который надо универсализировать, например, принимает параметр "name" и делает setSatate({name}),
принимает "position" и делает setSatate({name})
setParam = (name: string, value: any) => {
this.setState({ ...this.state, [name]: value });
}
...
setParam("position", ...);
...this.state
let oldValue = null;
$('#text2').keyup(function(){
const value = $('#text2').val();
const isDelete = oldValue && value.length < oldValue.length;
if (isDelete) {
// тут ваш код выполниющийся при удалении
}
oldValue = value;
}
Mixed content ...
и ресурсы не загрузятся.function newElement(){
var li = document.createElement('li');
var inputValue = document.getElementById('form-control').value;
var i = document.createTextNode(inputValue);
li.appendChild(i);
var date = new Date();
var taskDate = date.toLocaleString();
var time = document.createTextNode(" " + taskDate);
li.appendChild(time);
...