indexOf()在错误的环境中显示“-1”

问题描述 投票:0回答:3

我试图使用indexOf()来检查字符串是否包含另一个字符串,如果是这样,它将触发不同的if语句,下面是代码和记录的结果:

  var  str2="Handrail Ext";
  if (fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1) {
    console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
    $('.results #handrails').val(new_posts);
    $('.wpcf7-form input[name=hidden-post-handrails]').val(new_posts);
  } else {
    console.log("$FixingDig: " + fixingDig + " $Fixing: " + fixing + "InfexOf Result: " + fixing.toString().indexOf(str2) + ".");
    $('.results #handrails').val(0);
    $('.wpcf7-form input[name=hidden-post-handrails]').val("0");
  }

控制台日志

页面加载:

$FixingDig: No Fixing. $Fixing: No Fixing. IndexOf Result: -1.

选择修复:

$FixingDig: Bolt Down (610mm). $Fixing: No Fixing. IndexOf Result: -1.

选择带扶手的固定:

$FixingDig: Bolt Down (760mm + Handrail Ext.). $Fixing: No Fixing. IndexOf Result: -1.
javascript indexof
3个回答
1
投票

要检查使用> -1而不是=== -1

var  str = "Handrail Ext";

var text1 = "bla and bla Handrail Ext bla"
var text2 = "bla and bla Handrail bla"

console.log(text1.indexOf(str))
console.log(text2.indexOf(str))

0
投票

你的情况(fixing.toString().indexOf(str2) === -1 || fixingDig.toString().indexOf(str2) === -1)错了。

fixing = "No Fixing."FixingDig = "No Fixing."的情况

if ("No Fixing.".toString().indexOf("Handrail Ext") === -1 || ...)
//  ^--------------------- True -------------------------^
//  Since the condition is a OR, the remaining isn't evaluated

fixing = "Bolt Down (610mm)."FixingDig = "No Fixing."的情况

if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 || ...)
//  ^--------------------------True -----------------------------^
//  Since the condition is a OR, the remaining isn't evaluated

fixing = "Bolt Down (760mm + Handrail Ext.)."FixingDig = "No Fixing."的情况

if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 || "No Fixing.".toString().indexOf("Handrail Ext") === -1)
//  ^----------------------------------- False ----------------------------------^    ^---------------------- True ------------------------^
//  Since the condition is a OR, the remaining IS evaluated. The right part is true, the whole condition is TRUE

将您的病情替换为:

if (fixing.toString().indexOf(str2) === -1 && fixingDig.toString().indexOf(str2) === -1)
//            Notice this -----------------^^

亲自尝试一下

console.log("No Fixing No Fixing");

if ("No Fixing".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
    console.log("not found");
  } else {
    console.log("found");
  }
  
console.log("Bolt Down (610mm). No Fixing");
  
if ("Bolt Down (610mm).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
    console.log("not found");
  } else {
    console.log("found");
  }
  
console.log("Bolt Down (760mm + Handrail Ext.). No Fixing");
  
if ("Bolt Down (760mm + Handrail Ext.).".toString().indexOf("Handrail Ext") === -1 && "No Fixing".toString().indexOf("Handrail Ext") === -1) {
    console.log("not found");
  } else {
    console.log("found");
  }

0
投票

您可以使用“includes”而不是“indexOf”。

© www.soinside.com 2019 - 2024. All rights reserved.