Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти тройные дубликаты в массиве (https://javascript.ru/forum/misc/63029-najjti-trojjnye-dublikaty-v-massive.html)

Blondinka 13.05.2016 21:07

рони,
да, но только тех, что идут подряд. 3 необязательное число (но не меньше трёх). Может быть и 5. Гдавное, чтоб они шли подряд. Пример: 8, 9, 10, 11.

рони 13.05.2016 21:18

Blondinka,
вариант для 3
<script>
var arr = [9, 9, 9, 111, 5, 2, 5, 3, 4, 4, 5, 7] ;

function test(a) {
    a = a.slice().sort(function(a, b) {
        return a - b
    });
    return a.some(function(c, b) {
        var d = a[b + 1],
            e = a[b + 2];
        return c == d - 1 && c == e - 2 && (a = [c, d, e])
    }) && a
};
document.write(JSON.stringify(test(arr)))
  </script>

Blondinka 13.05.2016 21:26

Цитата:

Сообщение от рони
то есть это массив незаполненных ячеек ? тогда почему id повторяются

Хотела сама написать. Решила, что если найду функцию поиска дубликатов - будет роще написать то, что мне нужно. Пол-дня пыталась написать/переделать чужое. Безрезультатно. Без этой функции программа работать не будет.

Blondinka 13.05.2016 21:31

рони,
спасибо. Работает.

рони 13.05.2016 21:35

Blondinka,
почему дубликаты есть? id уникально

Blondinka 13.05.2016 21:45

рони,
потому что я хотела усложнить себе задачу и написать хоть что-нибудь сама (переделать программу с "поиска дубликатов" на "поиск последовательностей"). Я знаю, что id уникально. В основном коде, оно добавляется только 1 раз.

рони 13.05.2016 21:55

Blondinka,
функция для последовательности любой длины больше 2, вернёт найденную первую последовательность или false.
<script>
var a = [20,21,22,1,2,3,4,5,8] ;

function test(a) {
    a = a.slice().sort(function(a, b) {
        return a - b
    });
    return a.some(function(d, b) {
        var c = a.slice(b);
        c.some(function(a, b) {
            return a != c[b + 1] - 1 && (c = c.slice(0, b + 1))
        });
        return 2 < c.length && (a = c)
    }) && a
};
document.write(JSON.stringify(test(a)))
  </script>

Blondinka 13.05.2016 22:10

рони, спасибо.


Часовой пояс GMT +3, время: 00:19.