摘要:创建一个新数组,包含原数组中所有的非假值元素。例如和都是被认为是假值。
创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。
以下是自己实现的compact()
compact:(array)=>{ let result = [] //判断参数是否是数组 如果不是数组 直接返回一个空数组 //也可以用es6提供的Array.isArray(array)来判断 更简洁 if(!Object.prototype.toString.call(array)==="[object Array]") { return result } array.forEach(element => { if(element) { result.push(element) } }); return result }
lodash的实现
compact:(array)=>{ var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (value) { result[resIndex++] = value; } } return result; }
这样写的好处是 传入一个字符串会返回一个数组 好像也没其他作用,为什么不直接判断是否是数组呢?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105492.html
摘要:最近打算去研究下的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。第一个是将数组拆分成多个长度的区块,并将这些区块组成一个新数组。 最近打算去研究下lodash的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。第一个是 chunk 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么...
摘要:是一个包含了所有参数的类数组对象,比如说第一个参数可以通过获取。可能是和一样的原因,由于箭头函数的原因,指向了父级作用域。参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 创建一个新数组,将array与任何数组 或 值连接在一起 自行实现 concat:function(){ let length = arguments.length let re...
摘要:首先我们先说一下这个函数的作用,这个函数接收一个数组作为参数然后将数组中所有通过布尔转换可以变为的值去除从而生成一个新的数组。 原文首发于Lodash源码讲解 这是我们阅读Lodash源码的第3篇博客,在这篇文章里我们来学习一下Lodash的compact方法。 compact函数内部没有依赖别的函数,让我们先来看一下compact函数的源码。 /** * Creates an ar...
摘要:到这里,源码分析完了。但是,有两个致命的特性的遍历不能保证顺序会遍历所有可枚举属性,包括继承的属性。的遍历顺序依赖于执行环境,不同执行环境的实现方式可能会不一样。 小时候,乡愁是一枚小小的邮票, 我在这头, 母亲在那头。 长大后,乡愁是一张窄窄的船票, 我在这头, 新娘在那头。 后来啊, 乡愁是一方矮矮的坟墓, 我在外头, 母亲在里头。 而现在, 乡愁是一湾浅浅的海峡, 我在这头, 大...
摘要:文档地址中文文档英文文档源码地址创建一个新数组,包含原数组中所有的非假值元素。例如和都是被认为是假值。下面对比一下两者效率,如下图传送门可以看到使用更快,如果没有兼容性需求,还是使用原生函数比较好。 百忙之中(闲来无事)想抽点时间好好读一下源码,于是就选了Lodash来写一个系列罢。读源码顺序就按照loadsh文档顺序来。 文档地址:中文文档 英文文档源码地址:gayhub ...
阅读 2375·2021-09-22 15:15
阅读 639·2021-09-02 15:11
阅读 1783·2021-08-30 09:48
阅读 1883·2019-08-30 15:56
阅读 1479·2019-08-30 15:52
阅读 2041·2019-08-30 15:44
阅读 430·2019-08-29 16:29
阅读 1537·2019-08-29 11:06