• js实现 find 函数


    // 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

  • 相关阅读:
    8 pandas模块,多层索引
    7 numpy 傅里叶,提取图片轮廓
    6 DataFrame处理丢失数据--数据清洗
    5 pandas模块,DataFrame类
    4 pandas模块,Series类
    3 numpy模块
    2 线性代数基础
    1 Ipython、Jupyter 入门
    jdk安装与环境变量配置(一劳永逸)
    对jsp可见域的变量感悟
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/16613513.html
Copyright © 2020-2023  润新知