使用Jquery确定字符串是否在数组中

时间:2017-01-25 15:42:53

标签: javascript jquery

我有以下代码:

function checkIfUnitCostItemsAreZero(finaliseIDList)
{
    var selectedItems = finaliseIDList;
    selectedItems = $.makeArray(selectedItems); //array is ["-2,-3"]
    var getItem = $("#builderItemsList .listItem");
        for (i = 0; i < getItem.length; i++)
        {
            var currentItem = ($(getItem[i]).attr("key"));
            if (currentItem.indexOf(selectedItems) > -1) 
            {//currentItem = "-2" then "-3"
                var unitCost = $(getItem[i]).attr("unitcost");  
                console.log(unitCost);
                unitCost = parseFloat(unitCost);
                if(unitCost==0.00)
                {
                    return true;
                    break;
                }
            }
        }
    return false;
}

所选项目目前等同于以下内容:

selectedItems = ["-2,-3"]

进一步说,currentItem在以下位置进行评估: "-2",以及下一个循环"-3"

在这两种情况下,都不会进入if声明。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由Hossein和Aer0提供,使用以下内容修复:   - 作为单个值传入的字符串。使用split将其分隔为数组。   - 修改if子句。

function checkIfUnitCostItemsAreZero(finaliseIDList)
{
    var selectedItems = $.makeArray(finaliseIDList.split(','));
    var getItem = $("#builderItemsList .listItem");
        for (i = 0; i < getItem.length; i++) {
            var currentItem = ($(getItem[i]).attr("key"));
            if (selectedItems.indexOf(currentItem) > -1)
                {
                    var unitCost = $(getItem[i]).attr("unitcost");  
                    unitCost = parseFloat(unitCost);
                    if(unitCost==0.00)
                        {
                        return true;
                        break;
                        }
                }
        }
        return false;
}

PS为什么在解决方案有效的情况下进行投票:/如果你打算至少使用答案或评论进行投票。