Определить индексы одинаковых рядом стоящих элементов в заданном массиве
В массиве 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, время: 13:31. |