我试图在数组中找到一个项目。我的变量a仅得到-1,因此在数组中未找到该项目,但该项目肯定在数组中。

var sortiment = [];
var geschmack = [];
var kategorie = [];

function filterOptions(eigenschaft, filter){
    inhalt = filter + " = " + eigenschaft;
    console.log(inhalt);
    console.log(sortiment[0]);
    a = sortiment.indexOf(inhalt);
    console.log(a);

    switch(filter) {
        case "sortiment":
            sortiment.push([inhalt]);
            break;
        case "geschmack":
            geschmack.push([inhalt]);
            break;
        case "kategorie":
            kategorie.push([inhalt]);
            break;
        default:
            console.log("FAIL");
    }
}


如果找到该项目,我不想将其添加到数组中。

最佳答案

您正在将包含单个元素(字符串)的(内部)数组推入(外部)数组,但是随后您从外部数组中搜索字符串的索引。那是行不通的。换句话说,问题很可能是这样的:

geschmack.push([inhalt]);


为什么那里有那些方括号?您可能想要这样:

geschmack.push(inhalt);


如果要对此进行可视化,则数组最终将看起来像这样:

[ ["filter1=eigenschaft1"], ["filter2=eigenschaft2"] ]


但是您不是在搜索["filter1=eigenschaft1"];您要搜索"filter1=eigenschaft1",所以当然找不到它。或者,您可以更改以下行:

 a = sortiment.indexOf([inhalt]);


但是,老实说,这整个事情似乎有些令人费解。

关于javascript - JavaScript Array indexOf()方法不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31996210/

10-11 07:59