微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运算符在Javascript中测试集合成员资格

我怎样才能有效地在Javascript中进行集合成员资格检查?我有一个可能很大的字符串数组,我需要验证给定的字符串是否是数组的成员.

最初我认为in运算符可以提供帮助,但是在阅读了Mozilla Developer Network上的文档后,我发现了它的用途is different.在Javascript中它检查指定的属性是否在指定的对象中.

出于性能相关的原因,我更喜欢使用js内置,但是如果不存在这样的函数,我可能最终会做以下其中一项:

>使用数组创建一个具有数组元素作为键的对象,然后使用
>迭代数组元素并逐项进行比较
>实现二进制搜索

任何意见?还是更好的想法?

谢谢

最佳答案
正如你在this问题中发现的那样,几乎每个框架都有一个功能,一些浏览器甚至本身实现了一个indexOf函数(尽管不是全部).

似乎他们都通过迭代数组来完成它,有些使用另一个方向(从结束开始),因为它看起来更快.对于次线性算法,您可能需要在键上实现某种带二进制搜索的哈希集.

可以在here找到HashSet实现的示例.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高