Javascript 查找序列中下一个数字的算法
顺序:1,2,3,…10 公式:x=n+1 假设序列是一个数组,在给定时间序列的前三个索引上包含1,3,5,其余索引包含0Javascript 查找序列中下一个数字的算法,javascript,jquery,Javascript,Jquery,顺序:1,2,3,…10 公式:x=n+1 假设序列是一个数组,在给定时间序列的前三个索引上包含1,3,5,其余索引包含0 function findNextNumber(numArry) { var number = 1; var tempArray = new Array(); for (i = 0; i < 10; i++) { tempArray[i] = "E"; } $.each(numArry, function ()
function findNextNumber(numArry) {
var number = 1;
var tempArray = new Array();
for (i = 0; i < 10; i++) {
tempArray[i] = "E";
}
$.each(numArry, function () {
if (this != 0) {
tempArray[this] = "F"
}
});
$.each(tempArray, function (index) {
if (this == "E") {
number = index + 1;
return false;
}
});
return number;
}
现在,下一个数字应该是2,数组的前四个索引将有1,2,3,5,剩下的索引将包含0
function findNextNumber(numArry) {
var number = 1;
var tempArray = new Array();
for (i = 0; i < 10; i++) {
tempArray[i] = "E";
}
$.each(numArry, function () {
if (this != 0) {
tempArray[this] = "F"
}
});
$.each(tempArray, function (index) {
if (this == "E") {
number = index + 1;
return false;
}
});
return number;
}
现在,下一个数字应该是4,数组的前五个索引将有1,2,3,4,5,剩下的索引将包含0
function findNextNumber(numArry) {
var number = 1;
var tempArray = new Array();
for (i = 0; i < 10; i++) {
tempArray[i] = "E";
}
$.each(numArry, function () {
if (this != 0) {
tempArray[this] = "F"
}
});
$.each(tempArray, function (index) {
if (this == "E") {
number = index + 1;
return false;
}
});
return number;
}
现在,下一个数字应该是6,数组的前六个索引将有1,2,3,5,6,剩下的索引将包含0
function findNextNumber(numArry) {
var number = 1;
var tempArray = new Array();
for (i = 0; i < 10; i++) {
tempArray[i] = "E";
}
$.each(numArry, function () {
if (this != 0) {
tempArray[this] = "F"
}
});
$.each(tempArray, function (index) {
if (this == "E") {
number = index + 1;
return false;
}
});
return number;
}
函数findNextNumber(numary){
var数=1;
var tempArray=新数组();
对于(i=0;i<10;i++){
tempArray[i]=“E”;
}
$.each(NUMARY,函数(){
如果(此!=0){
tempArray[this]=“F”
}
});
$.each(临时数组、函数(索引){
如果(此==“E”){
数字=指数+1;
返回false;
}
});
返回号码;
}
是我错了还是仅仅是以下几点
function formula(n){ return n+1; }
var sequence = [1,3,5,0,0,0,0,0,0,0];
var i=0;
function findNextNumber() {
for (; i<10; i++) {
var x = formula(i);
if (sequence[i] != x) {
sequence.splice(i, 0, x); // insert x here
sequence.length = 10; // chop of rest
return x;
}
}
// else
return null/undefined/whatever;
}
> findNextNumber()
2
> findNextNumber()
4
> findNextNumber()
6
> findNextNumber()
7
> findNextNumber()
8
> findNextNumber()
9
> findNextNumber()
10
> findNextNumber()
whatever
函数公式(n){返回n+1;}
var序列=[1,3,5,0,0,0,0,0,0];
var i=0;
函数findNextNumber(){
对于(;i findNextNumber()
2.
>findNextNumber()
4.
>findNextNumber()
6.
>findNextNumber()
7.
>findNextNumber()
8.
>findNextNumber()
9
>findNextNumber()
10
>findNextNumber()
无论什么
函数下一个路径(数组,直到){
this.array=array;
这个.lastIndex=0;
此.lastItem=0;
这个.直到=直到;
this.loopFinished=false;
这个。完成=错误;
this.reset=函数(){
这个.lastIndex=0;
此.lastItem=0;
这个。完成=错误;
this.loopFinished=false;
}
this.getNext=函数(){
如果(完成){
返回null;
}
如果(!this.loopFinished){
for(loop=this.lastIndex;loopuntil)
打破
返回此.lastItem;
}否则{
this.lastItem=this.array[loop];
}
}
}
this.loopFinished=true;
if(this.lastItem
。发布您的代码和您面临的问题。我有一个解决方案,但似乎没有时间efficient@TariqMahmood:您应该在问题中包含您的代码。注释部分仅适用于有限的代码片段。只要在找到正确的索引后立即中断循环,然后从该索引运行循环,就可以取得良好的效果er值提前一个索引。请注意,如果数组长度小于10,则此示例不能完全按照要求工作。然后它将无法填充其余的。好的,我更新了代码,现在它可以按要求工作