arr.reduce(({ count, result }, curr) => {
if (curr === искомый элемент && count === 1) {
return {
count: 0,
result: […result, тут на что заменять]
}
if (curr === искомый элемент) {
return {
count: 1,
result: […result, curr]
}
return {
count,
result: […result, curr]
}
}
}
}, { count: 0, result: [] })
смысл в подсчете совпадений искомого элемента. Уже находил его раньше и сейчас он попался? заменяешь и аннулируеш ькаунтер. Он попался, но еще не находил (имеется ввиду не находил, чтобы считать его «каждым вторым»), увеличиваешь счетчик. Не попался? Просто ниче не делаешь