当前位置: 首页 > news >正文

30个常用的lodash工具函数

  1. chunk: 将数组拆分成指定大小的多个数组
function chunk(array, size) {const result = [];for (let i = 0; i < array.length; i += size) {result.push(array.slice(i, i + size));}return result;
}
  1. compact: 过滤数组中的假值(false、null、0、“”、undefined 和 NaN)
function compact(array) {return array.filter(Boolean);
}
  1. concat: 合并多个数组
function concat(...arrays) {return [].concat(...arrays);
}
  1. difference: 返回第一个数组中与其他数组不同的元素
function difference(array, ...values) {const set = new Set([].concat(...values));return array.filter(item => !set.has(item));
}
  1. drop: 从数组的开头删除指定数量的元素
function drop(array, n = 1) {return array.slice(n);
}
  1. dropRight: 从数组的末尾删除指定数量的元素
function dropRight(array, n = 1) {return array.slice(0, -n);
}
  1. fill: 使用指定的值填充数组
function fill(array, value, start = 0, end = array.length) {return array.map((item, index) => (index >= start && index < end) ? value : item);
}
  1. findIndex: 返回第一个满足条件的元素的索引
function findIndex(array, predicate) {for (let i = 0; i < array.length; i++) {if (predicate(array[i], i, array)) {return i;}}return -1;
}
  1. flatten: 扁平化数组
function flatten(array) {return [].concat(...array);
}
  1. fromPairs: 将键值对数组转换为对象
function fromPairs(array) {const result = {};for (const [key, value] of array) {result[key] = value;}return result;
}
  1. head: 返回数组的第一个元素
function head(array) {return array[0];
}
  1. indexOf: 返回指定元素在数组中的索引
function indexOf(array, value, fromIndex = 0) {for (let i = fromIndex; i < array.length; i++) {if (array[i] === value) {return i;}}return -1;
}
  1. initial: 返回数组中除了最后一个元素的所有元素
function initial(array) {return array.slice(0, -1);
}
  1. intersection: 返回多个数组中共同存在的元素
function intersection(...arrays) {const set = new Set(arrays[0]);for (const array of arrays) {set.forEach(item => {if (!array.includes(item)) {set.delete(item);}});}return Array.from(set);
}
  1. join: 将数组转换为字符串并使用指定的分隔符连接
function join(array, separator = ',') {return array.join(separator);
}
  1. last: 返回数组的最后一个元素
function last(array) {return array[array.length - 1];
}
  1. nth: 返回数组中指定索引的元素(支持负数索引)
function nth(array, n = 0) {return n >= 0 ? array[n] : array[array.length + n];
}
  1. pull: 从数组中移除指定的值
function pull(array, ...values) {return array.filter(item => !values.includes(item));
}
  1. reverse: 反转数组的顺序
function reverse(array) {return array.reverse();
}
  1. slice: 返回数组的指定部分
function slice(array, start = 0, end = array.length) {return array.slice(start, end);
}
  1. sortedIndex: 返回指定值在已排序数组中应该插入的索引
function sortedIndex(array, value) {let low = 0;let high = array.length;while (low < high) {const mid = Math.floorlow + high) / 2);if (array[mid] < value) {low = mid + 1;} else {high = mid;}return low;
}

22.: 返回数组除了第一个元素的所有元素

function tail(array) {return array.slice(1);
}
  1. take: 返回数组的前n个元素
function take(array, n = 1) {return array.slice(0, n);
}
  1. union: 返回多个数组的并集
function union(...arrays) {return Array.from(new Set([].concat(...arrays)));
}
  1. uniq: 返回数组中唯一的元素
function uniq(array) {return Array.from(new Set(array));
}
  1. without: 返回数组中除了指定值之外的所有元素
function without(array, ...values) {return array.filter(item => !values.includes(item));
}
  1. xor: 返回多个数组的异或集
function xor(...arrays) {const count = {};for (const array of arrays) {for (const item of array) {count[item] = (count[item] || 0) + 1;}}return Object.keys(count).filter(item => count[item] === 1);
}
  1. zip: 将多个数组按索引合并为一个数组
function zip(...arrays) {const maxLength = Math.max(...arrays.map(array => array.length));const result = [];for (let i = 0; i < maxLength; i++) {result.push(arrays.map(array => array[i]));}return result;
}
  1. countBy: 根据指定条件对数组进行分组计数
function countBy(array, iteratee) {const result = {};for (const item of array) {const key = typeof iteratee === 'function' ? iteratee(item) : item[iteratee];result[key] = (result[key] || 0) + 1;}return result;
}
  1. debounce: 创建一个防抖函数,延迟执行指定的函数
function debounce(func, wait, immediate = false) {let timeout;return function(...args) {const later = () => {timeout = null;if (!immediate) {func.apply(this, args);}};const callNow = immediate && !timeout;clearTimeout(timeout);timeout = setTimeout(later, wait);if (callNow) {func.apply(this, args);}};
}

相关文章:

  • 力扣hot100 长回文子串 中心扩散法 动态规划 一题多解 满注释版
  • 安卓相对布局RelativeLayout
  • Oracle篇—普通表迁移到分区表(第五篇,总共五篇)
  • 《A++ 敏捷开发》- 6 估算软件规模
  • vue核心知识点
  • 深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net
  • JavaScript入门
  • 如何快速记忆小鹤双拼键位图?
  • 递归再认识----【详解】内含迷宫和八皇后问题
  • 1.理解AOP,使用AOP
  • IP 层转发分组的过程
  • 基于ecal的foxglove studio可视化工具的使用
  • Pyroch中transforms 图像增强发方法的应用
  • 如何在 JavaScript 中使用 map() 迭代数组
  • 【Java基础】自定义类型处理器xxxTypeHandler
  • idea + plantuml 画流程图
  • input实现文字超出省略号功能
  • javascript数组去重/查找/插入/删除
  • log4j2输出到kafka
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Protobuf3语言指南
  • storm drpc实例
  • tab.js分享及浏览器兼容性问题汇总
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue小说阅读器(仿追书神器)
  • 分享一份非常强势的Android面试题
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #android不同版本废弃api,新api。
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十) 初识 Docker file
  • (十)T检验-第一部分
  • (一)基于IDEA的JAVA基础10
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)四层和七层负载均衡的区别
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET Remoting学习笔记(三)信道
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 后台导出excel ,word
  • .net 托管代码与非托管代码
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net7 环境安装配置
  • .NET的数据绑定
  • @hook扩展分析
  • [100天算法】-x 的平方根(day 61)
  • [APIO2012] 派遣 dispatching
  • [BJDCTF 2020]easy_md5