2010-11-26 3 views
2

У меня есть массив какпроверить, если элементы массива являются последовательными --- Javascript

arr = [1,2,3,4,6,7,8,9] 

Теперь я хочу, чтобы проверить, если значения в массиве являются последовательными.

Будучи более конкретным, я хочу это

Первая регистрация дает первый и второй элемент являются последовательными, а следующий элемент не является последовательным, то алго должен возвращать первый элемент, из которого начал порядковый номер

Как

First Check will give 1 
Second Check will give 6 
and so on... 

Пожалуйста, помогите Спасибо заранее

+4

Является ли это назначение? Похоже на это. Если да, покажите, что вы пробовали до сих пор и где вы застряли. Если нет, не могли бы вы объяснить контекст, требующий от вас этого? – 2010-11-26 12:05:31

+0

Мне нужен algo, который вернет мне значения, как я описал в конце – Rohit 2010-11-26 12:06:15

ответ

3

Один Sidenote является что вы хотите называть его несколько раз, поэтому каждый вызов должен знать, к какому массиву он работает, и к какому предыдущему offset в этом массиве. Единственное, что вы можете сделать, это расширить собственный объект Array. [Demo]

Array.prototype.nextCons = (function() { 
    var offset = 0; // remember the last offset 
    return function() { 
    var start = offset, len = this.length; 
    for (var i = start + 1; i < len; i++) { 
     if (this[i] !== this[i-1] + 1) { 
     break; 
     } 
    } 
    offset = i; 
    return this[start]; 
    }; 
})(); 

Использование кода

var arr = [1,2,3,4,6,8,9]; 
arr.nextCons(); // 1 
arr.nextCons(); // 6 
arr.nextCons();​ // 8 
0

псевдо:

int count = 0 
for i = 0 to array.length - 2 
    if {array[i + 1] - array[i] = 1 then 
     count+=1 
     return i 
    else count=0} 
4
/** 
* Given an array of number, group algebraic sequences with d=1 
* [1,2,5,4,8,11,14,13,12] => [[1,2],[4,5],[8],[11,12,13,14]] 
*/ 
import {reduce, last} from 'lodash/fp'; 

export const groupSequences = (array) => (
    reduce((result, value, index, collection) => { 
    if (value - collection[index - 1] === 1) { 
     const group = last(result); 
     group.push(value); 
    } else { 
     result.push([value]); 
    } 
    return result; 
    }, [])(array) 
); 
Смежные вопросы