繁体   English   中英

javascript indexOf与JSON字符串化对象

[英]javascript indexOf with JSON stringified objects

我试图找出一个字符串是否存在如下:

var test1 = '{"packageId":"1","machineId":"1","operationType":"Download"},{"packageId":"2","machineId":"2","operationType":"Download"}';

alert("found: " + test1.indexOf('{"packageId":"1","machineId":"1","operationType":"Download"}', 0));

但是,结果始终为0。

是什么赋予了?

以防这不是一个笑话......

String.prototype.indexOf返回目标字符串中匹配字符串的出现,因为您只是查找该行的第一个出现,它正确返回零。

如果你修改你的搜索字符串(例如用一些随机字母),你将得到-1作为结果,因为它将无法找到。

有一种使用二元非运算符的做法,几乎将.indexOf()的结果带到一个布尔表达式。 这看起来像

var res = test1.indexOf('{"packageId":"1","machineId":"1","operationType":"Download"}');

if( ~res ) {
   // we have a match
} else {
   // no match at all
}

在没有详细说明的情况下, not -operator将从一个字节中取消每个位,也用于确定该值是正还是负的额外位 因此,因为在ECMAscript中,只有极少数值被评估为假值否则负值将评估为true

要真正拥有布尔结果,它看起来像

if( !!~res ) { }

在这种情况下,这也不是真正必要的。

使用.indexOf()得到“正确”结果的更常用的做法(对于数组来说也是如此)是检查结果是否大于-1

if( res > -1 ) { }

ya它的正确indexOf将返回你提到的字符串的起始索引,即y给出0.如果string不存在则返回-1

一些示例示例var sample =“welcome to javascript”;

alert ( sample.indexOf("welcome",0)); // return 0

alert ( sample.indexOf("come",0)); // return 3

alert ( sample.indexOf("came",0)); // return -1

alert ( sample.indexOf("javascript",0)); // return 11

比赛 :

if(sample.indexOf("welcome",0)>-1)
    alert("match");
else
    alert("Not match")l

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM