Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取下一个对象id,它不是';t残疾_Javascript_Object - Fatal编程技术网

Javascript 获取下一个对象id,它不是';t残疾

Javascript 获取下一个对象id,它不是';t残疾,javascript,object,Javascript,Object,现在的问题是我更改了从awnser获得的函数,但前一个函数不起作用 function getPrev(currPhotoId) { var i = currPhotoId - 1; i %= album.length; while ( album[i].disabled ) { i--; i %= album.length; } return i; } 只要输出大于0,它就会工作 TypeError: album[i] i

现在的问题是我更改了从awnser获得的函数,但前一个函数不起作用

function getPrev(currPhotoId) {
    var i = currPhotoId - 1;
    i %= album.length;
    while ( album[i].disabled ) {
        i--;
        i %= album.length;
    }
    return i;
}
只要输出大于0,它就会工作

TypeError: album[i] is undefined
undefined = "0"   
while ( album[i].disabled ) 
然后

function disabledCheck(currentID, direction)
if(album[currentID].disabled){
    // search for next one which isn't disabled in next or previous direction
}else{
    return currentID
}
如果要跳过此元素并搜索下一个未禁用的元素

function disabledCheck(currentID, direction)
for(var i = 0; i < (album.length - currentID))
{
    if(album[currentID].disabled){
        // search for next one which isn't disabled in next or previous direction
        continue;
    }else{
        return currentID
    }
    i++;
}
功能禁用检查(当前ID,方向)
对于(var i=0;i<(album.length-currentID))
{
如果(相册[currentID]。已禁用){
//搜索未在下一个或上一个方向禁用的下一个
持续
}否则{
返回当前ID
}
i++;
}
然后

function disabledCheck(currentID, direction)
if(album[currentID].disabled){
    // search for next one which isn't disabled in next or previous direction
}else{
    return currentID
}
如果要跳过此元素并搜索下一个未禁用的元素

function disabledCheck(currentID, direction)
for(var i = 0; i < (album.length - currentID))
{
    if(album[currentID].disabled){
        // search for next one which isn't disabled in next or previous direction
        continue;
    }else{
        return currentID
    }
    i++;
}
功能禁用检查(当前ID,方向)
对于(var i=0;i<(album.length-currentID))
{
如果(相册[currentID]。已禁用){
//搜索未在下一个或上一个方向禁用的下一个
持续
}否则{
返回当前ID
}
i++;
}

以下逻辑非常简单。诀窍是不断迭代,直到找到一个未禁用的,在到达终点时使用模数(
%
)执行循环

function getNext() {
    var i = this.currPhotoId + 1;
    i %= this.album.length;
    while ( this.album[i].disabled ) {
        i++;
        i %= this.album.length;
    }
    return this.album[i];
}

function getPrev() {
    var i = this.currPhotoId - 1;
    i %= this.album.length;
    while ( this.album[i].disabled ) {
        i--;
        i %= this.album.length;
    }
    return this.album[i];
}

只需确保至少有一个已启用,否则将无限循环。:)

以下逻辑非常简单。诀窍是不断迭代,直到找到一个未禁用的,在到达终点时使用模数(
%
)执行循环

function getNext() {
    var i = this.currPhotoId + 1;
    i %= this.album.length;
    while ( this.album[i].disabled ) {
        i++;
        i %= this.album.length;
    }
    return this.album[i];
}

function getPrev() {
    var i = this.currPhotoId - 1;
    i %= this.album.length;
    while ( this.album[i].disabled ) {
        i--;
        i %= this.album.length;
    }
    return this.album[i];
}

只需确保至少有一个已启用,否则将无限循环。:)

对不起,有点快,我不知道你是否想让我告诉你这件事?你可以把continue换成if/else语句,但这本身就可以了。是的,我需要一些额外的帮助。它也必须从currentID开始,对吗?我的错,我以为你想迭代。我再看看。我想你可能把你的第一个函数复杂化了,我所需要的只是一个函数,它检查下一个或上一个ID是否被禁用。如果这是原因,那么他应该检查下一个ID是否被禁用。例如,id 2是当前id 3被禁用,因此函数返回4,如果4也被禁用,则返回5是,但在关于“//搜索下一个未在下一个或上一个方向禁用的下一个”的部分中,我需要最后一个循环来检查下一行,而不是禁用。请注意,这有点快,我不知道你是否想让我告诉你这件事?你可以把continue换成if/else语句,但这本身就可以了。是的,我需要一些额外的帮助。它也必须从currentID开始,对吗?我的错,我以为你想迭代。我再看看。我想你可能把你的第一个函数复杂化了,我所需要的只是一个函数,它检查下一个或上一个ID是否被禁用。如果这是原因,那么他应该检查下一个ID是否被禁用。例如,id 2是当前id 3被禁用,因此函数返回4,如果4也被禁用,则返回5是,但在关于“//搜索下一个未在下一个或上一个方向禁用的下一个”的部分中,我需要最后一个循环来检查下一行,而不是DisabledHanks,我设法对它进行了一点调整,因此它给了我想要的输出:D你是我的英雄!您可以将这些功能添加到相册的任何实例以支持多个相册:例如
album.getNext=getNext
。如果希望它是一个完全隔离的函数,则需要传入当前索引和对相册的引用以进行迭代,否则无法确定下一个/上一个是否被禁用。在这种情况下,添加一个例如
album
参数,并将主体中的
this.album
的每个实例更改为
album
,对于
currPhotoId
也是如此。谢谢,我对其进行了一点调整,因此它提供了我想要的输出:D你是我的英雄!您可以将这些功能添加到相册的任何实例以支持多个相册:例如
album.getNext=getNext
。如果希望它是一个完全隔离的函数,则需要传入当前索引和对相册的引用以进行迭代,否则无法确定下一个/上一个是否被禁用。在这种情况下,添加例如
album
参数,并将主体中的
this.album
的每个实例更改为
album
,对于
currophotoid
也是如此。