带有 JSON 字符串化对象的 javascript indexOf

标签 javascript jquery

我正在尝试找出字符串是否存在,如下所示:

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() 的结果转化为 bool 表达式。这看起来像

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

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

无需详细说明,not 运算符将取反字节中的每一位,还有用于确定值是正数还是非正数的额外位消极的。因此,由于在 ECMAscript 中只有很少的值被计算为假值,负值将被计算为true

要真正得到一个 bool 结果,它看起来像

if( !!~res ) { }

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

使用 .indexOf() 获得“正确”结果的更常用的做法是检查结果是否大于 -1

if( res > -1 ) { }

关于带有 JSON 字符串化对象的 javascript indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134489/

相关文章:

javascript - 根据所选文本转到 URL 的书签

php - 在 JavaScript 中插入 PHP 代码

javascript - 父组件的状态更新后,组件不会更新

jquery - 针对相同的 child ,但只针对某些不同的 parent ——CSS 和 jQuery 选择器样式

javascript - jQuery fullCalendar + Fancybox 弹出窗口编辑事件

javascript - 使用此脚本通过单击外部关闭按钮时遇到问题

Javascript 每天弹出一次

javascript - 为您的 HTML5 应用程序创建键盘快捷键?

javascript - 如何提交由jQuery生成的HTML多个表单

javascript - 将迷你图添加到动态填充的 HTML 表格