javascript逻辑其他如果不工作

时间:2015-05-04 17:17:23

标签: javascript php jquery dom

我对其他问题有疑问 在我的情况下,最后其他不工作

var pakeEach = $(".Thide").each(function () {
    var cat = $(this).val();
    if (cat.indexOf(PCatId) == -1) {
        console.log("Pilih tidak ada di your aksess")
    } else {
        if (cat.indexOf(PCatId) != -1) {
            console.log("Show only " + cat);
        } else {
            console.log("Remove");//why not working last else
        }
    }
});

4 个答案:

答案 0 :(得分:1)

从您的逻辑开始:

if (value == -1) {
    ...
} else {
    if (value != -1) {
        ...
    } else {
        ...
    }
}

您可以将其简化为:

if (value == -1) {
    ...
} else if (value != -1) {
    ...
} else {
    ...
}

正如你所看到的,你说的是“如果值为-1然后......,否则如果值不是-1 ......”这涵盖了两种可能的情况:值不能是-1而不是-1 - 1(正如A. Wolff在评论中所讨论的那样)。

其他人永远不会被击中,因为所有可能的分支都已被覆盖。

如果要在其他分支(可能是找到项目的分支)中包含删除逻辑,则应使用以下内容:

if (value === -1) {
    console.log("Pilih tidak ada di your aksess")
} else {
    console.log("Show only " + cat);
    console.log("Remove!");
}

这是一种更简洁的方式来编写相同的东西。请注意,===运算符通常优先于==,尤其是当您知道要比较相同类型的对象时。

因为您正在调用indexOf,唯一可能的结果是项目位于集合(indexOf(foo) > -1)中,或者不在集合中(indexOf(foo) === -1)。这里没有第三个选项,除非你关心集合中的 where

例如,要删除项目(如果项目不是集合中的第一个项目),您可以使用:

if (value === -1) {
    console.log("Pilih tidak ada di your aksess")
} else if (value === 0) {
    console.log("Show only " + cat);
} else {
    console.log("Remove!");
}

由于if条件仅匹配可能值的一小部分,因此在这种情况下实际上可以点击else

答案 1 :(得分:0)

试试这个:

    var pakeEach = $(".Thide").each(function () {
    var cat = $(this).val();
    if (cat.indexOf(PCatId) == -1) 
    {
        console.log("Pilih tidak ada di your aksess");
         console.log("Remove");
    } 
    else 
    {
            console.log("Show only " + cat);
    } 
});

答案 2 :(得分:0)

你要做的是:

var pakeEach = $(".Thide").each(function () {
    var cat = $(this).val();
    if (!cat) {
        console.log("Pilih tidak ada di your aksess")
    } else if (cat === PCatID) {
        console.log("Show only " + cat);
    } else {
        console.log("Remove");
    }
});

首先检查cat是否为空,然后根据其值进行分支。

答案 3 :(得分:0)

算法你在说  如果 cat.indexOf(PCatId)等于-1,那么执行第一个if块

else 执行第二个块,它逻辑上处理cat.indexOf(PCatId)与-1不同的情况。

我的意思是在第一个你永远不会得到cat.indexOf(PCatId)== -1,因为你是在第一个 这是您的答案,并作出一些修改和评论:

var pakeEach = $(".Thide").each(function () {
    var cat = $(this).val();
    if (cat.indexOf(PCatId) == -1) {
        // this part of code is executed if cat.indexOf(PCatId) == -1
        console.log("Pilih tidak ada di your aksess")
    } else {
        // here at this level we can never get cat.indexOf(PCatId) == 1
        if (cat.indexOf(PCatId) != -1) {
            console.log("Show only " + cat);
        }
        // this else should be removed !!!! because it is useless
        else {
            console.log("Remove");//why not working last else
        }
    }
});