Определить индексы одинаковых рядом стоящих элементов в заданном массиве
В массиве so = ['O', 'S', 'O', 'S', 'O', 'S', 'O', 'O', 'S', 'O', 'S', 'S', 'O', 'S' 'O', 'O' ]; имеются рядом стоящие одинаковые элементы 'O', 'O' и 'S', 'S' Как можно определить индексы у этих парных элементов ? В нашем случае я посчитал, что нужные индексы это для 'O', 'O' - [6,7], для 'S', 'S' [10,11], для 'O', 'O' [14,15] . Такие "двойники" могут располагаться совершенно произвольно.
Очень не удобно использовать document.addEventListener('DOMContentLoaded', page_ready); Или, как вывести результаты за пределы document.addEventListener('DOMContentLoaded', page_ready); function page_ready() {...................}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Example 1</title>
<script defer src="SO.js"></script>
</head>
<body style="background:dimgray;">
<canvas id="canvas" width="800" height="400" style="background:white;"></canvas>
</body>
</html>
document.addEventListener('DOMContentLoaded', page_ready);
function page_ready()
{
let so = ['O', 'S', 'O', 'S', 'O', 'S', 'O', 'O', 'S', 'O', 'S', 'S', 'O', 'S' 'O', 'O' ];
let soi = [];
for(let index = 1; index < so.length; index++)
{
if(so[index] == so[index - 1])
{
soi.push(so[index],(index - 1),index);
}
}
console.log(soi);
}
|
let so = ['O', 'S', 'O', 'S', 'O', 'S', 'O', 'O', 'S', 'O', 'S', 'S', 'O', 'S', 'O', 'O' ];
let soi = [];
so.reduce(
function(prev, current, index, arr) {
if(prev == current)
soi.push([current, index - 1, index]);
return current;
}
);
console.log(soi);
|
Определить индексы одинаковых рядом стоящих элементов в заданном массиве
Отлично и коротко. Спасибо. Проверил код - работает правильно.
|
поиск повторов любой длины в массиве
IZUM,
let arr = ['O', 'S', 'O', 'S', 'O', 'S', 'O', 'O', 'S', 'O', 'S', 'S', 'O', 'S', 'O', 'O'];
function repeat(arr) {
let retry = [], temp;
arr.reduce(
function(prev, current, index, arr) {
if (prev == current) temp.push(index);
else temp = [index];
if (temp.length == 2) retry.push(temp);
return current;
}
);
return retry
}
console.log(repeat(arr));
Цитата:
|
| Часовой пояс GMT +3, время: 09:19. |