js数组中indexOf和findIndex的区别

R 绘制环形树状图 按大类小类的从属关系绘制环形图,并把不同值的节点设置为相应大小。要求同一类的节点应为同一颜色。 按照输入,处理代码和输出记录 阅读详情

1. indexOf

语法

arr.indexOf(searchElement[, fromIndex])

参数

searchElement  要查找的元素

fromIndex (可选 )  开始查找的位置

如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.

返回值

首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1

2. findIndex

语法

arr.findIndex(callback[, thisArg])

参数

callback (element, index, array)

针对数组中的每个元素, 都会执行该回调函数, 执行时会自动传入下面三个参数:

  element 当前元素。

  index  当前元素的索引。

  array  调用findIndex的数组。

thisArg

可选。执行callback时作为this对象的值.

返回值

数组中通过提供测试函数的第一个元素的索引。否则,返回-1

3. 两者之间的区别

(1) 使用方式

  indexOf传入参数为待查找元素,findIndex传入参数为自定义函数

(2)适用范围

  虽然indexOf与findIndex都可用以查找元素,但findIndex比indexOf使用更灵活,适用范围更广

  例如,我们可以自定义findIndex的查找函数,使其查找值时忽略大小写、强转类型比较,甚至可以查找值相同的引用类型,以下举例详细说明

a. 忽略大小写

const arr = [1, '2', 'Test', { a: 1 }]
const findVal = 'test'

console.log(arr.indexOf(findVal)) // -1
console.log(arr.findIndex(val => {
    if (val.toLowerCase && findVal.toLowerCase) return val.toLowerCase() === findVal.toLowerCase()
    return val === findVal
})) // 2

b. 类型强转

const arr = [1, '2', 'Test', { a: 1 }]
const findVal = 2

console.log(arr.indexOf(findVal)) // -1
console.log(arr.findIndex(val => val == findVal)) // 1

c. 查找值相同的引用类型

const arr = [1, '2', 'Test', { a: 1 }]
const findVal = { a: 1 }

console.log(arr.indexOf(findVal)) // -1
console.log(arr.findIndex(val => compare(val, findVal))) // 3
  
/**
 * @name 两值比较
 * @param {*} obj1 值1
 * @param {*} obj2 值2
 * @returns {Boolean} true 相等 false 不等
 */
export function compare (obj1, obj2) {
  const type = getDataType(obj1)
  if (type !== getDataType(obj2)) return false

  if (typeof obj1 !== 'object' || obj1 === null) return obj1 === obj2

  // Set类型, Map类型, 转化为数组
  if (type === 'set' || type === 'map') {
    obj1 = Array.from(obj1)
    obj2 = Array.from(obj2)
  }

  const obj1_keys = Object.keys(obj1)
  const obj2_keys = Object.keys(obj2)
  if (obj1_keys.length !== obj2_keys.length) return false
  
  return obj1_keys.every(k =>  compare(obj1[k], obj2[k]))
}

/**
 * @name 获取数据类型
 * @param {*} val 数据
 * @returns {String} 数据类型
 * boolean 布尔值, number 数, string 字符串,
 * undefined, null, array 数组, object 对象,
 * function 函数, symbol, set Set类型, map Map类型
 */
export function getDataType (val) {
  const rules = {
    '[object Boolean]': 'boolean',
    '[object Number]': 'number',
    '[object String]': 'string',
    '[object Undefined]': 'undefined',
    '[object Null]': 'null',
    '[object Array]': 'array',
    '[object Object]': 'object',
    '[object Function]': 'function',
    '[object Symbol]': 'symbol',
    '[object Set]': 'set',
    '[object Map]': 'map'
  }

  return rules[Object.prototype.toString.call(val)]
}

【人脸识别】基于 Gabor+SVM和PCA+SVM实现人脸识别matlab源码含 GUI 1 简介 随着经济的快速发展,互联网的普及,信息安全逐渐被人们所重视。人脸识别技术作为保护信息安全的重要手段之一,也逐渐被研究学者所重视。人脸识别作为计算机视觉技术和生物特征识别技术的一个重要分支,模式识别与人工智能的一个重要领域,其主要任务是对静态图像或动态视频进行识别。如何快速的正确的对人脸进行识别是目前人脸识别课题的一个难题。人脸识别算法的选取直接关系到人脸识别的识别率。 本文首先介绍了国内外人脸识别的发展现状,并对人脸图像预处理方法进行了详细阐述。图像预处理的方法有很多,主要包括:灰度变换、图像锐 阅读详情

相关推荐

sram设计流程+memory compiler整理

→。

qq_50761108的博客 1万+

findIndex与indexOf 的区别

1.find()与findIndex() 相同:参数与用法 不同:find返回元素,findIndex返回索引;找不到时find返回undefined,findIndex返回-1。 2.findIndex()与indexOf() findIndex比indexOf更强大一些,可以通过回调函数查找对象数组,indexOf只能查找数组中指定的值,不过indexOf可以指定开始查找位置的索引。 ...

BLUEHEART 8129

手把手教你用Cadence Virtuoso仿真一个5GHz CMOS分频器:从原理图到后仿,避开那些教科书上没写的坑

本文详细介绍了在Cadence Virtuoso环境中设计5GHz CMOS分频器的完整流程,从原理图设计到后仿真优化,特别关注实际工程中容易被忽视的关键问题。内容涵盖分频器核心指标解析、锁存器拓扑选择、接口设计匹配以及后仿真优化策略,为射频集成电路设计提供实用避坑指南。

weixin_26934905的博客 263

Web前端之JavaScript的indexOf和findIndex的区别

Web前端之JavaScript的indexOf和findIndex的区别

优快云博客主页地址:https://mengjian.blog.youkuaiyun.com/ 3004

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 221

ANSYS Workbench瞬态结构分析(1)时域分析

本文围绕瞬态结构分析展开。首先阐释其概念与理论基础,涵盖控制方程及数值求解方法。接着详述在 ANSYS Workbench 中进行瞬态分析的操作流程,以音叉为例,介绍从创建分析系统、材料定义、几何处理与网格划分,到边界条件与载荷设置、求解器设置及结果后处理的各步骤。之后对分析结果进行探讨,并针对计算不收敛、计算时间过长等常见问题给出调试技巧,旨在为读者提供全面的瞬态结构分析知识与实践指导。

qq_58675332的博客 6532

indexOf和findIndex的区别

两者的区别 indexOf()主要是用于查找基本数据类型。例如===》获取数组中某个元素的下标。 findIndex可用于查找复杂数据类型。例如===》获取数组里对象的下标。 总结: indexOf()方法内部使用的是 全等运算符,如果复合数据类型例如数组里对象,全等运算符就会比较它们的内存地址,如果地址相同,等式才会成立。 因此,当遇到基本数据类型就使用indexOf查询在数组当中的下标。遇到复杂数据类型就用findIndex查询数组对象中的下标。 findIndex数组对象去重: let

m0_52358470的博客 1453

研究生研一学习机器学习ML、深度学习DL的规划

研究生学习机器学习DL、深度学习DL的规划 保上研之后也没有很好规划自己的学习路线,看到b站上的一位清华博士讲述他本科也是机械跨考计算机的学习路线,所以记录下来,从现在开始按照规划来一点一点地做好。 掌握python(推荐一周) 1.1 面向对象编程 廖雪峰python网站: https://www.liaoxuefeng.com 1.2 数据分析Numpy numpy 100题: https://www.yanxishe.com/columnDetail/24784 1.3数据分析pandas pan

没有最好,只有更好 3100

js数组的findIndex和indexOf对比

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。 findIndex() 方法为数组中的每个元素都调用一次函数执行: 当数组中的元素在测试条件时返回true时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 -1 注意:findIndex() 对于空数组,函数是不会执行的。 注意:...

xufeiayang的博客 2万+

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1905

Claude Code Cli 源码泄露事件全解析:从51万行代码中拆解AI Agent的记忆护城河

2026年3月,Anthropic的AI编程助手Claude Code意外泄露51万行核心代码,暴露了其多Agent架构、六级权限验证系统及创新的记忆机制。记忆系统采用四层设计:用户自定义框架、自动记忆提取、智能上下文压缩和纯文件存储。最独特的是"自动做梦"功能,AI会定期整理记忆,类似人类睡眠记忆巩固。代码还揭示未发布功能如电子宠物系统,但也暴露权限系统漏洞和代码质量问题。这次泄露展现了AI助手核心技术的复杂性,特别是其记忆系统如何通过透明可编辑的设计建立用户信任。

program哲学 471

js中find、findIndex、indexOf的用法和区别

其中,find、findIndex和indexOf是常用的数组方法,它们都可以用来查找数组中特定的元素或值。当找到符合条件的元素时,find方法会返回该元素的值。不同的是,findIndex方法返回符合条件的元素在数组中的索引,而不是元素的值。find方法返回符合条件的元素的值,findIndex方法返回符合条件的元素在数组中的索引,而indexOf方法返回指定元素在数组中的索引。find和findIndex方法只会查找数组中第一个符合条件的元素,而indexOf方法也只会查找数组中第一个符合条件的元素。

tyxjolin的专栏 6135

FPGA/IC 秋招笔试/面试题总结(续)

FPGA/IC 秋招笔试/面试题总结(续)来啦… 文章目录二十七、状态机1. Moore/Mealy状态机2.一、二、三段式状态机 二十七、状态机 1. Moore/Mealy状态机 (1)Moore状态机: 输出只由当前状态决定,即次态=f(现态。输入),输出=f(现态) Moore型状态机的输出信号是直接由状态寄存器译码得到的。 Moore型状态机检测序列1101如下 Moore型状态机输出函数只由状态变量决定,想要输出Z=1,必须S4状态形成,即寄存器中的1101都打进去后才可以。输出Z=1会在

Crazzy_M的博客 2万+

JavaScript 中find()、findIndex()、filter()、indexOf() 处理数组方法的具体区别

find()、findIndex()、filter()、indexOf()的区别

2403_84691304的博客 6664

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

indexOf 和 findIndex 的区别

比较函数作为第一个参数,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂。比较,更多的是用于查找基本类型,如果是对象类型,则是判断是否是同一个对象的引用。,如果是对象类型,则是判断是否是同一个对象的引用。好像都是找数组中满足条件的第一个元素,那其中的。的第一个索引,如果不存在,则返回-1。若没有找到对应元素则返回-1。:查找值作为第一个参数,采用。方法返回在数组中可以找到一个。

hw_happy的博客 414

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JavaScript中indexOf和findIndex和find的用法与细节

尽管数组中存在相同值,这三个方法都是只会拿数组的第一个符合条件的值。find方法也是一个回调,但find返回的不是索引值,而是元素的值。对于数组中的每个元素,这个回调函数都会被调用一次,并且这个回调函数应当返回一个布尔值。indexOf(), findIndex()和find()都是在JavaScript中用来查找数组中元素的方法,但它们的用法略有不同。: 该方法返回指定元素在数组中首次出现的索引,如果没有找到则返回-1。: 该方法返回数组中符合指定条件的第一个元素,如果没有找到则返回。

weixin_49250511的博客 404

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript中findIndex和indexOf的区别

indexOf 的第一个参数 expect a value,可以用于原始类型的数组 findIndex 的一个参数 expect a callback,可以用于复杂数据类型的数组或者查找条件比一个值要复杂的情况

EmotionComputer 909

数组的方法

数组 Array.prototype.concat() 语法:var new_array = old_array.concat(value1[, value2[, ...[, valueN]]]) 返回值:新的Array实例 描述:concat() 方法用于合并两个或多个数组。 const array1 = ['a', 'b', 'c']; const array2 = ['d', 'e', 'f']; const array3 = array1.concat(array2); console.log(a

qq_41769706的博客 173

JS中indexOf()方法的使用

Array.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。语法:arr.indexOf(searchElement[, fromIndex]);String.indexOf() 方法返回调用它的 String 对象中第一次出现的指定值的索引,如果不存在,则返回-1。语法:str.indexOf(searchElement[, fromIndex])

青春木鱼的博客 2万+

面试官:indexOf 和 findIndex 的区别?

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群indexOf 与 findIndex 都是查找数组中满足条件的第一个元素的索引indexOfArray.prototype.indexOf():indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。来自:MDN例如:constsisters=['a'...

程序员成长指北 203

详解indexOf lastIndexOf includes findIndex find

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script type="text/jav

qq_37805832的博客 781

findIndex和indexOf的区别

findIndex和indexOf的区别

engineer_z的博客 454

includes 、indexOf、find、findIndex

let array=[1,2,4,5] // includes 包含某个值 就返回true let ee = array.includes(2) console.log( ee ); // true // find 返回第一个符合条件的元素 let er = array.find(v=>v>2); console.log(er); // 4 // findIndex 返回符合条件的索引 let er1 = array.findIndex(v=>v==4); console.l

H_zm7635的博客 320

javascript中获取字符串或数组中元素的索引

有些时候,我们需要知道一个字符串中字符的位置,或者一个数组中元素的位置,这是就需要对该变量进行迭代操作。 对于数组,有两个方法indexOf和findIndex() ,需要注意的是,findIndex是数组的方法,不适用于字符串 1 let arr = ['a' ,'b', 'c'] 2 let idx = arr.findIndex((item) => { 3 re...

weixin_30314631的博客 554

ES6——find()、findindex()、indexof、includes()以及some

find let ary = [{ id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '李四' } ]; /* let target = ary.find((item,index)=>item.name === '李四2'); */ let target = ary.find(

NanChen的博客 2081

es提供了3个 {严格相等 ---这个很重要} 的搜索方法 indexOf()、lastIndexOf()和 includes() +断言函数 findIndex()和find()

1321313等会

fttttttt的博客 486
上一篇: 微信云开发 创建一个云函数
下一篇: js中数据类型判断
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值