首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js中indexof 0

indexOf 是 JavaScript 中的一个数组方法,用于查找数组中某个元素的第一个匹配项的索引位置。如果没有找到该元素,则返回 -1

基础概念

  • 方法签名array.indexOf(searchElement[, fromIndex])
    • searchElement:要查找的元素。
    • fromIndex(可选):开始查找的位置。默认为 0

示例代码

代码语言:txt
复制
let arr = [1, 2, 3, 4, 5];

console.log(arr.indexOf(3)); // 输出: 2
console.log(arr.indexOf(6)); // 输出: -1
console.log(arr.indexOf(3, 3)); // 输出: -1,从索引3开始查找,3不存在于该位置之后

应用场景

  1. 检查元素是否存在
  2. 检查元素是否存在
  3. 获取元素的索引
  4. 获取元素的索引

可能遇到的问题及解决方法

问题:indexOf 查找效率问题

对于大型数组,indexOf 可能会比较慢,因为它需要逐个检查每个元素。

解决方法

  • 使用更高效的数据结构,如 SetMap,它们提供了更快的查找时间。
  • 如果需要频繁查找,可以考虑预处理数据,例如构建索引。
代码语言:txt
复制
let set = new Set(arr);
console.log(set.has(3)); // 输出: true

问题:indexOf 对于非原始类型的查找

对于对象或其他复杂类型,indexOf 默认比较的是引用而不是值。

解决方法

  • 使用 findIndex 方法配合自定义比较函数。
  • 或者将对象转换为字符串进行比较。
代码语言:txt
复制
let arr = [{id: 1}, {id: 2}, {id: 3}];
let target = {id: 2};

let index = arr.findIndex(item => item.id === target.id);
console.log(index); // 输出: 1

总之,indexOf 是一个简单且常用的数组方法,但在处理大型数据集或复杂类型时需要注意性能和比较方式的选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS中的indexOf方法

indexOf()简介 indexOf()是js中内置的方法之一,它的功能大家都很熟悉:简单来说就是得到数据的索引,对于正则不熟练的人,是个很不错的方法。...) 注:(暂不讨论两个参数时(第二个参数为查询的起始位置),以及lastIndexOf()) String类型使用indexOf(); String中的indexOf方法 (话不多说直接上代码,不跟你多...BB) var s = '12345'; console.log(s.indexOf(1)); //0 console.log(s.indexOf('1')); /.../0 console.log('----------------------------'); 相信大家已经发现特点,也就是string的IndexOf()是对数据进行了隐式类型转换的,...如果参数是数值它会转换为字符来进行查询然后返回索引,本质原因是什么呢,那就是 我们js底层代码中String.prototype.indexOf()使用的是==进行比较判断; Number类型的IndexOf

5.3K40
  • js indexOf 的正确用法「建议收藏」

    indexOf在js中有着重要的作用,可以判断一个元素是否在数组中存在,或者判断一个字符是否在字符串中存在,如果存在返回该元素或字符第一次出现的位置的索引,不存在返回-1。...(str.indexOf("w")); //打印结果为5 那么,当想删除某个数组中的某个元素时,常常会这么写 var arr = [1, 2, 3]; var idx = arr.indexOf(2)...(arr2)); //打印结果为1 这下明白了,就是因为如果数组中存放的是对象或者数组的话,必须是该对象的引用,才可以使用indexOf得到正确的索引值。...最初我是这么写的 var myIndexOf = function(arr,el){ for(var i=0;i<arr.length;i++){ if(JSON.stringify...var checkLen = function (o1, o2) { var count1 = 0, count2 = 0; if(o1 instanceof Object

    1.6K30

    JS通过substring、indexOf、lastIndexOf截取字符串中对应的内容「建议收藏」

    JavaScript截取字符串中的内容 substring(下标1,下标2);//从下标1截取到下标2 substring();不会改变自身变量 下标1:必填,非负整数,开始截取的字符串下标 下标...="abcdefghizk"; str=str.substring(1,5); console.log(str); //输出:bcde Tips:截取字符串的结束下标是不包含该字符本身的 ---- indexOf...(value);//查找匹配的字符首次出现的位置,并返回下标 如果indexOf()匹配不到字符串,则返回-1 value为需要匹配的字符串 Demo: let str="abcdefghizk";...abcdefghizk"; let index=str.lastIndexOf("h"); console.log(index); //输出 7 返回匹配字符串的下标 ---- 当我们需要在一大串字符串中截取...Demo: let str="abcdefghizk('http://www.baidu.com')lnmopqrstuv"; let url=str.substring(str.indexOf("('

    1.8K20

    简单探索 js 中 something >> 0 的原理

    target = target >> 0; 我倒不是对这个代码本身的作用有什么疑问,毕竟之前看过好多关于 js 技巧的文章,其中都介绍过这种写法,并且自己也在实际工作中运用过多次。...根据上面的代码可以得知,其中的操作符是一个右移操作符,如果英语比较好的或者对计算机术语比较熟悉,可以很快联想到 right-shift 这个词语(如果不好也可以根据词典得知),然后应用一下搜索大法就好了,在规范中搜索...应该是没错了,继续往下看,可以发现 12.8.4.1 中详细介绍了右移操作符的相关规范。 ?...之后带入之前右移操作规范的 10 和 11 步就会得知,’a’ >> 0 等价于 +0 >> 0,最终的结果是 +0。...但是当我们遇到一些自己不懂或者不熟悉的东西时,一定要有意识去寻根问底,这样积少成多,精通 js 早晚会变成现实。

    1.1K30

    js中javascript:void(0)什么意思

    void运算符通常仅用于获取未定义的原始值,通常使用“ void(0)”(等效于“ void 0”)。 在这些情况下,可以改用undefined全局变量(假设尚未将其分配给非默认值)。...void(0)只是一个简短且简单的脚本,其结果为undefined。...来源: 0);">here 此处:Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。...有以下几种情况: (1)下面的代码创建了一个超链接,当用户链接时,void(0) 计算为 0,所以 Javascript 上没有任何效果。...0)">单击此处什么也不会发生 //javascript:void(0) 仅仅表示一个死链接 (2)下面的代码创建了一个超链接,用户单击时会提交表单

    3.2K00

    JS 语法糖 0 ——解构

    JS 获取对象的属性和访问数组内容是都是很常用的操作,从 ECMAScript 6 开始,允许按照一定模式从数组和对象中提取值对变量进行赋值,这被称为解构(Destructuring)。...在这篇文章中,你将会看到 JS 解构的常见用法和技巧。 1.数组解构 1.1 简介 以前访问数组元素使用下标。...var cars = ["Saab", "Volvo", "BMW"] var car0 = cars[0], car1 = cars[1], car2 = cars[2] ES6 允许写成下面这样。...1.2 完全解构 如果左边模式中的变量能将右边数组元素全部解构出来,那么是完全解构。下面是一些使用嵌套数组进行完全解构的例子。..., 0] move({}); // [0, 0] move(); // [0, 0] 上面代码中,函数 move 的参数是一个对象,通过对这个对象进行解构,得到变量 x 和 y 的值。

    6.9K30

    js 中数字小数点末尾的0显示与否

    js 中数字小数点末尾的0显示与否 不显示0 显示0(数字格式化) 不显示0 我们先来看一道例题,然后围绕其展开“零”的讨论: 问题:得到一个随机数组成的数组,数组长度为10 结果类似于:[0.243...创建一个长度为10的数组,且每个元素为空 const arr = Array(10).fill(); console.log(arr); 输出(为了展示效果,下面均是在browser环境进行调试;另外在Node.js...下面使用了文章开头处封装的随机数获取函数 const newArr = arr.map(function (item) { return getRandom(100,1000)/1000;//获取0~...0的数字,只能将其数字格式化。...显示0(数字格式化) 下面是通过格式化方法显示小数点末尾末尾的0 ,最终获取的数字是string类型 /** * 格式化数字,保留小数点后末尾的0 * @param {Number} value 需要格式化的小数

    5.3K40

    后端 | Java 利用substring()和indexOf()从字符串中获取指定的字符

    代码: @Test void spiltStrDemo() { /* * str.substring(4, 9); -->在str中截取从下标4开始(包含),到下标...9之间的字符(不包含9) * str.indexOf("/"); -->返回str中“/”第一次出现时的下标 * str.indexOf("/", 5); -->返回跳过...12346789999"; /*第一种情况:知道具体字符下标,直接用substring()传入字符下标截取*/ // 第一种情况假设我们已经知道了str的具体值,我们要从str中取出...str.substring(4, 9); // 这里传入R的下标4,再传入第二个“/”的下标9,拿到的就是Riven /*第二种情况:不知道字符下标,但是知道分割字符是“/”,可以用indexOf...()获取字符“/”下标*/ // 第二种情况我们获取id->id1 String id = str.substring(0, str.indexOf("/"));

    3.2K40

    node.js学习笔记01-cmd0node0全局数据0异步事件

    /文件名/文件名(运行当前文件夹的xxx文件夹下的xxx文件) nodejs的使用 node的顶层对象是global(全局),不再是window 导入模块 文件一.js: let obj1 = require.../表示上层目录,/表示根目录 注意点:导入的文件后缀为js的时候,.js可以不用写,导入文件时,文件名前面必须加...../ 定义跨文件的全局变量 文件一.js: console.log(global.xxx); // 123 文件二.js: global.xxx = 123; 把需要的属性挂载到global下面...(){}} 文件二.js: module.exports = {} module.exports里的值默认是对象,require导入的其实是文件里的module.exports的值 多个值的写法一...: 在控制台里,进入当前js所在的文件夹 node 文件一 回车 // 后缀.js可以不用写 nodejs把所有的行为抽象成为事件 nodejs用来执行代码的过程叫做事件循环 while(true){

    94530
    领券