跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端算法

JavaScript 数组方法:find 与 findIndex 用法详解

JavaScript 数组方法 find 与 findIndex 用于查找元素或索引。find 返回匹配项对象,findIndex 返回下标。示例涵盖对象数组、数字数组及回调函数 this 绑定场景。通过返回值判断有效性可优化数据获取逻辑。

lzdxwyh发布于 2019/1/30更新于 2026/6/228 浏览
JavaScript 数组方法:find 与 findIndex 用法详解

JavaScript 数组方法:find 与 findIndex

在 JavaScript 中,find() 和 findIndex() 是用于遍历数组并查找元素的方法。两者的主要区别在于返回值:find() 返回匹配的第一个元素对象,而 findIndex() 返回对应的索引下标。

基础用法

const stu = [{ name: '李四', gender: '男', age: 20 }];

// find() 返回匹配的元素对象
stu.find((element) => element.name === '李四'); 
// 返回 {name: "李四", gender: "男", age: 20}

// findIndex() 返回匹配元素的索引下标
stu.findIndex((element) => element.name === '李四'); 
// 返回 0

对象数组查找示例

在实际业务中,常需根据特定字段(如省份名称)从对象数组中获取数据。以下示例展示了如何结合 findIndex() 判断是否存在目标数据。

var arr = [
  { provCode: null, count: "16", rgnname: "宁夏" },
  { provCode: null, count: "158", rgnname: "山东" },
  { provCode: null, count: "8", rgnname: "北京" },
  { provCode: null, count: "13", rgnname: "天津" },
  { provCode: null, count: "114", rgnname: "河北" },
  { provCode: null, count: "66", rgnname: "辽宁" },
  { provCode: null, count: "3", rgnname: "西藏" },
  { provCode: null, count: "123", rgnname: "河南" },
  { provCode: null, count: "56", rgnname: "浙江" },
  { provCode: null, count: "126", rgnname: "广西" },
  { provCode: null, count: "273", rgnname: "广东" },
  { provCode: null, count: "115", rgnname: "云南" },
  { provCode: null, count: "23", rgnname: "海南" },
  { provCode: null, count: "1", rgnname: "四川" },
  { provCode: null, count: "1094", rgnname: "count" }
];

// 假设 provinceName 为外部传入的变量
var provinceName = "广东";

// 定义查找条件函数
function getIndex(params) {
  return params.rgnname === provinceName;
}

// 使用 findIndex 获取索引
var e = arr.findIndex(getIndex);

if (e !== -1) {
  var count = Number(arr[e].count);
  console.log(count, "count");
  // 模拟格式转化及 DOM 操作
  // var ct = format(count);
  // $("#saleSt span:eq(0)").html(ct);
} else {
  // $("#saleSt span:eq(0)").html("0");
  console.log("未找到对应省份");
}

回调函数与 this 绑定

find() 和 findIndex() 支持传入第二个参数来指定回调函数中的 this 指向。

var arr = [-8, 1, 2, 3, 4, 5, 6, 7, 8, 9];

// find 返回第一个小于 0 的值
var ce = arr.find((n) => n < 0); 

// 使用 function 语法访问 value, index, arr
var AAA = arr.find(function(value, index, arr) {
  return value === -8;
});

var BBB = arr.findIndex(function(value, index, arr) {
  return value === -8;
});

console.log(AAA, BBB); // -8, 0

// this 绑定示例
function f(v) {
  return v > this.age;
}
let person = { name: 'John', age: 20 };

var CCC = [10, 12, 26, 15].find(f, person);   // 26
var DDD = [10, 12, 26, 15].findIndex(f, person); // 2

console.log(CCC, DDD);

目录

  1. JavaScript 数组方法:find 与 findIndex
  2. 基础用法
  3. 对象数组查找示例
  4. 回调函数与 this 绑定
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 微软开源 TinyTroupe:基于 LLM 的多智能体角色模拟框架
  • Java 21 + Spring Boot 3.3 并发编程实战:虚拟线程与结构化并发
  • MySQL 事务的核心概念与 ACID 特性详解
  • Git 原理与使用详解(上):版本控制核心架构与基础操作
  • GLM-5 与 Qwen3.5 双模型对比:一句话生成 HTML 小游戏实战
  • AI 对话页流式处理架构:Web Streams 与 Fetch API 实践
  • AI 产品经理核心职责、技能体系与职业发展路径详解
  • OpenClaw 与 cpolar 组合实现私人 AI 外网访问教程
  • 鸿蒙电商购物车全栈实战:用户管理、商品列表与购物车功能实现
  • JDK 17 核心新特性深度解析
  • 整合 LLama-Factory 引擎增强 NPC 对话逻辑的技术实践
  • Midjourney AI 绘画工具安装与使用指南
  • AI 写作小说全流程指南及工具推荐
  • 法奥机器人 ROS2 环境搭建
  • 双延迟深度确定性策略梯度算法 (TD3) 详解与实现
  • Git 跨平台安装与配置实战指南
  • 大模型厂商入驻钉钉生态,争夺企业级应用入口
  • OpenClaw + Ollama 集成指南:本地私有化部署 LLM
  • 大模型技术名词与概念学习笔记:架构、Prompt 与推理
  • JavaScript 事件循环进阶:rAF、Web Workers 与任务调度

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online