indexOf is not working in JavaScript

十年热恋 提交于 2019-12-24 10:45:28

问题


I am checking an index Of string in JAVASCRIPT. and this is coming as false. where as the value does belong to it as below :

if(idOfControl.indexOf(idOfButton))  == is giving false for the below values.

idOfControl  = "dlInventory_btnEditComment_0"
idOfButton   = "dlInventory_btnEditComment"

But if I run idOfControl.replace(idOfButton, ""); It is working and replacing the text.

Any reason for this?


回答1:


indexOf can also return 0, in the event of your string being found at the position 0. 0 evaluates to false. Try:

if(idOfControl.indexOf(idOfButton) > -1)

More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf




回答2:


There are these three big options:

indexOf > -1

The result of indexOf can be 0 meaning that the string was found at the beginning of the string. When string is not found, the return value is -1, therefore:

if (idOfControl.indexOf(idOfButton) > -1) {
    // Do something
}

Which can be nicer written as @paxdiablo commented:

if (idOfControl.indexOf(idOfButton) >= 0) {
    // Do something
}

via regex

You can use a very simple regular expression to test your match.

var idOfControl  = "dlInventory_btnEditComment_0"
var control = /dlInventory_btnEditComment/;

if (idOfControl.test(control)) {
    // do something
}

This approach can be enhanced to capture the last number of your string (if you need it)

var idOfControl  = "dlInventory_btnEditComment_0"
var control = /dlInventory_btnEditComment_(\d+)/;

var match = control.exec(idOfControl);

if (match) {
    alert('the number found is: ' + match[1]);
}

You can try it out here: http://jsfiddle.net/4Z9UC/

via indexOf in a hacky way

This uses a bitwise operator to return a truthy value when the position is !=-1 (In two's complement notation, -1 is internally represented as 111...111, and its inversion is 000...000 which is 0, i.e. a falsy value). It is in fact more efficient than the >-1 option, but it is harder to read and to understand. (EDIT: this became so popular that you can say it is a standard)

if (~idOfControl.indexOf(idOfButton)) {
    // do something
}


来源:https://stackoverflow.com/questions/20065660/indexof-is-not-working-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!