资讯专栏INFORMATION COLUMN

lodash数组篇之3 concat( )

韩冰 / 1702人阅读

摘要:是一个包含了所有参数的类数组对象,比如说第一个参数可以通过获取。可能是和一样的原因,由于箭头函数的原因,指向了父级作用域。参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

创建一个新数组,将array与任何数组 或 值连接在一起

自行实现

   concat:function(){
      let length = arguments.length
      let result = []
      if(!length) {
         return result
       }
      for(let i = 0;i

lodash 实现

function concat() {
  var length = arguments.length;
  if (!length) {
    return [];
  }
  var args = Array(length - 1),
      array = arguments[0],
      index = length;

  while (index--) {
    args[index - 1] = arguments[index];
  }
  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
}

由于参数的数量不确定 所以首先想到函数免费赠送的一个参数 arguments。这点和官方的想法是一样的 。arguments是一个包含了所有参数的类数组对象,比如说第一个参数可以通过arguments[0]获取。
但是arguments参数有一个很诡异的地方,无法在箭头函数内使用,只能在普通的function内使用。
可能是和 this 一样的原因,由于箭头函数的原因,指向了父级作用域。

然后最后那里,我是用了es6提供的原生concat方法。lodash用到了他自己实现的一些方法,后面再看是什么东西。

刚刚google的时候都在说es6的新特性 rest 可以替代有很多缺陷的arguments(比如说不是真正的数组,无法在严格模式和箭头函数内使用)

ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。根据rest concat()函数可以改成下面这种形式

      concat:(...p) =>{
        let length = p.length
        let result = []
        if(!length) {
            return result
        }
       for(let i = 0;i

美滋滋

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105537.html

相关文章

  • lodash数组篇之2 compact()

    摘要:创建一个新数组,包含原数组中所有的非假值元素。例如和都是被认为是假值。 创建一个新数组,包含原数组中所有的非假值元素。例如false, null, 0, , undefined, 和 NaN 都是被认为是假值。 以下是自己实现的compact() compact:(array)=>{ let result = [] //判断参数是否是数组 如果不是...

    robin 评论0 收藏0
  • lodash数组篇之1 chunk()

    摘要:最近打算去研究下的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。第一个是将数组拆分成多个长度的区块,并将这些区块组成一个新数组。 最近打算去研究下lodash的源码,准备把大部分方法都实现一遍。先自己写,然后在对照源码。第一个是 chunk 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么...

    cangck_X 评论0 收藏0
  • js实用篇之数组、字符串常用方法

    摘要:常常在开发中,会使用到很多数组和字符串的处理方法,这里列举一些我常用到的一些,方便大家参考使用。数组转化成字符串,原来的数组不变。将作为切割字符,结果存在一个字符串中。补充数字保留小数,结果是字符串类型的。 常常在开发中,会使用到很多js数组和字符串的处理方法,这里列举一些我常用到的一些,方便大家参考使用。 数组方面 push:向数组尾部增加内容,返回的是新数组的长度。 var arr...

    xiaoxiaozi 评论0 收藏0
  • Lodash 中文文档 (v3.10.1) - “Chain” 方法

    摘要:中文文档方法方法创建一个包含的对象以开启内置的方法链。注意该方法会修改包装数组。返回返回强制转为字符串的值示例执行方法链队列并提取未包装的值别名返回返回已处理的未包装的值示例 Lodash 中文文档 (v3.10.1) - Chain 方法 Translated by PeckZegOriginal Docs: Lodash v3.10.1 Docs Chain 方法 _(value)...

    BLUE 评论0 收藏0
  • 前端工程化篇之 Gulp

    摘要:是一个构建工具,基于的平台运行,使用的是的模块化语法。我们使用需要用到的包一个任务,对应一个包,对应一个处理逻辑对应的是同步任务,从左到右,依次执行任务。时间长对应的是异步任务,效率高,时间短。 gulp 是一个构建工具,基于Node.js的平台运行,使用的是commonJs的模块化语法。 我们使用gulp需要用到的包 一个TASK任务,对应一个包,对应一个处理逻辑、 gulp.s...

    Donald 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<