我有一个数组作为检查如果数组元素是连续--- JavaScript的
arr = [1,2,3,4,6,7,8,9]
现在我要检查,如果数组中的值是连续的。
作为更具体的,我想这
首先检查给第一和第二个元素是连续的下一个元素是不连续的,则算法中必须从连续数开始的地方返回的第一个元素
像
First Check will give 1
Second Check will give 6
and so on...
请帮助 在此先感谢
我有一个数组作为检查如果数组元素是连续--- JavaScript的
arr = [1,2,3,4,6,7,8,9]
现在我要检查,如果数组中的值是连续的。
作为更具体的,我想这
首先检查给第一和第二个元素是连续的下一个元素是不连续的,则算法中必须从连续数开始的地方返回的第一个元素
像
First Check will give 1
Second Check will give 6
and so on...
请帮助 在此先感谢
一个旁注是你想多次调用它,所以每个调用应该知道它正在处理哪个数组,以及该数组中以前的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
伪代码:
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}
/**
* 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)
);
这是一个任务?它看起来像。如果是这样,请显示您迄今为止所尝试的内容以及您卡住的位置。如果不是,你能否解释一下需要你这样做的上下文? – 2010-11-26 12:05:31
我想要一个算法,它会返回我的值,如我在最后描述的 – Rohit 2010-11-26 12:06:15