js实现 find 函数
JS 实现 函数 Find
2023-09-14 09:07:43 时间
// arr:要查找的数组,predict:要查找的 key 字符串 或 [key,value] 数组,或 对象{key,value},fromIndex:要从数组中第一个元素开始查,默认为 0 function find(arr, predict, fromIndex = 0) { // 定义查找元素存在的函数,即当该函数满足条件,则说明可以找到,返回找到的第一个满足条件的对象 let predictFn = null; // 如果 predict 传入的是字符串 key if (typeof predict === "string") { // 这里传入的 item 相当于遍历 arr 数组 中的某一条数据 predictFn = (item) => item[predict]; } else if (Array.isArray(predict)) { // 如果传入的是数组 [key,value] predictFn = (item) => item[predict[0]] === predict[1]; } else if (Object.prototype.toString.call(predict) === "[object Object]") { // 如果传入的是对象 {key:value,key2:value2} let keys = Object.keys(predict); predictFn = (item) => { return keys.every((key) => item[key] === predict[key]); }; } for (let i = fromIndex; i < arr.length; i++) { let item = arr[i]; // 最终判断predictFn这个条件是否满足,满足则返回 item 即满足条件的整条数据 if (predictFn(item)) { return item; } } return undefined; } console.log( find( [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6, d: 8 }, ], "a" ) ); console.log( find( [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6, d: 8 }, ], "d" ) ); console.log( find( [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6, d: 8 }, ], ["a", 4] ) ); console.log( find( [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6, d: 8 }, ], { a: 4 } ) );
// { a: 1, b: 2, c: 3 }
// { a: 4, b: 5, c: 6, d: 8 }
// { a: 4, b: 5, c: 6, d: 8 }
// { a: 4, b: 5, c: 6, d: 8 }
参考链接:https://www.cnblogs.com/dont27/p/16364633.html
相关文章
- JS框架_(Laydate.js)简单实现日期日历
- js中json对象和字符串的转换
- JS - 兼容到 IE 8
- js里slice,substr和substring的区别
- js选择目录
- js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
- js实现文本框支持加减运算的方法
- 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输
- springboot+vue实现前后端分离之前端vue部分(spring boot 2.5.4/vue.js 3.2.4)
- SAP UI5自学教程一:button.js的加载逻辑
- SAP UI5 library-dbg.js - local location
- 为什么Note.js 里面没有sap.ui.core.Control.extend()这样的代码,但是runtime有自动生成有
- Atitit 业务流程执行引擎的实现 目录 1.1. 引擎实现语言java js php等1 1.2. 流程语言 xml sql js等 业务流程定义语言规范总结1 1.3. 实体方法定义2
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net js javascript c++ python
- SAP UI5框架Component.js里extend函数的实现原理
- 华为OD机试 - 总最快检测效率(Java & JS & Python)
- javascript实现代码高亮-wangHighLighter.js
- js 两个日期比较相差多少天
- JS中注入eval, Function等系统函数截获动态代码
- leetcode 141. 环形链表 js 实现
- js 实现计数排序
- js 实现选择排序及优化
- js 实现 sum 函数无限累加
- js实现多个异步任务的串行和并行执行(add/sum)
- js实现函数防抖与节流
- 前端之 JS 实现全选、反选、取消选中
- JS 字符串常用函数