JavaScript indexOf String方法返回多个结果

问题描述 投票:-1回答:1

我正在遍历表中的项目列表,并有一个搜索字段。我正在搜索的项目具有许多非常相似的值(票号):indexOf在大多​​数情况下都有效,但在某些情况下,它会返回多个结果。

如果您正在搜索特定的票证编号,则仅应返回带有所搜索的票证值的<tr>。在下面,query是搜索值。如果等于-1,则跳过该值。然后执行检查,以使continue移至已过滤的结果,并将其呈现出来。

for (var i in data){
    var ticket = data[i].ticket.indexOf(query) === -1;

    if (ticket)
        continue;
    else {
        filtered_data.push(data[i]);
    }
}

一个例子:我搜索ABC002465179,它将返回以下内容:

[ABC002465179 ABC002480483ABC002480487ABC002480494ABC002480265

我也喜欢match方法,但是看到的结果相同。

对我在这里俯瞰的一切有见识吗?

为每个评论者创建一个jsfiddle:https://jsfiddle.net/7zrknwga/3/

尝试在此处进行复制,因此我应该设置1个结果。

UPDATE:能够弄清楚。正如@KaeyangTheG所说,filtered_data还有其他事情。过滤器中的另一列(parent_ticket)具有null的能力:对此进行了检查,但是当我移动逻辑以同时检查indexOf件和null方面时(使用&&) ,它能够过滤正确的结果。

因此问题绝不是针对ticket的indexOf检查,而是针对parent_ticket的检查,因为可能存在空值。 ticket从不null

javascript indexof
1个回答
0
投票

[如果只想知道要查询的票证存在于数据数组中,则可以简单地迭代该数组,并将票证字段与query字符串进行比较。

// isFound is for tracking the ticket if it exist or not and indexOfTicket is for tracking its index.
let isFound = false;
let indexOfTicket = -1;

data.map((item, index)=>{
    if(item.ticket == query){
        isFound = true;
        indexOfTicket = index;
    }
})
if(isFound){
    console.log("Ticket "+data[indexOfTicket]+" is at "+(indexOfTicket)+' position');
}else {
    console.log("Not Found");
}
© www.soinside.com 2019 - 2024. All rights reserved.