Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.09.2022, 21:53
Аспирант
Отправить личное сообщение для IZUM Посмотреть профиль Найти все сообщения от IZUM
 
Регистрация: 21.08.2022
Сообщений: 57

Определить индексы одинаковых рядом стоящих элементов в заданном массиве
В массиве 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);
       
}

Последний раз редактировалось IZUM, 26.09.2022 в 22:19.
Ответить с цитированием
  #2 (permalink)  
Старый 26.09.2022, 22:40
Аватар для Alikberov
Кандидат Javascript-наук
Отправить личное сообщение для Alikberov Посмотреть профиль Найти все сообщения от Alikberov
 
Регистрация: 16.08.2018
Сообщений: 109

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);

Последний раз редактировалось Alikberov, 26.09.2022 в 22:51.
Ответить с цитированием
  #3 (permalink)  
Старый 26.09.2022, 22:58
Аспирант
Отправить личное сообщение для IZUM Посмотреть профиль Найти все сообщения от IZUM
 
Регистрация: 21.08.2022
Сообщений: 57

Определить индексы одинаковых рядом стоящих элементов в заданном массиве
Отлично и коротко. Спасибо. Проверил код - работает правильно.
Ответить с цитированием
  #4 (permalink)  
Старый 26.09.2022, 23:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

поиск повторов любой длины в массиве
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));


Сообщение от IZUM
как вывести результаты за пределы document.addEventListener
не осилил...

Последний раз редактировалось рони, 26.09.2022 в 23:13.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет одинаковых элементов в массиве Mayder Общие вопросы Javascript 4 13.11.2016 22:35
Как определить количество элементов в многомерном массиве Dima00782 Общие вопросы Javascript 3 12.06.2010 14:15