美文网首页
每天一个lodash方法(8)

每天一个lodash方法(8)

作者: 公子七 | 来源:发表于2018-08-29 11:27 被阅读19次

    Array method 系列之八

    • join:通过把 array的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成的。
     function join(array, separator) {
          // 调用原生join方法实现
          return array == null ? '' : nativeJoin.call(array, separator);
    }
    
    • last:返回数组最后一个元素。
    function last(array) {
      const length = array == null ? 0 : array.length
      // 最后一个元素 == array[length - 1]
      return length ? array[length - 1] : undefined
    }
    
    • lastIndexOf:从数组的尾部查询需查找的元素,如找到匹配值返回下标,否则返回-1;类似indexOf
    function lastIndexOf(array, value, fromIndex) {
          var length = array == null ? 0 : array.length;
          if (!length) {
            return -1;
          }
          var index = length;
          if (fromIndex !== undefined) {
            index = toInteger(fromIndex);
            index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
          }
          // 确定查询起始位置index
          return value === value
            ? strictLastIndexOf(array, value, index)
            : baseFindIndex(array, baseIsNaN, index, true);
        }
    
    // strictIndexOf
    function strictLastIndexOf(array, value, fromIndex) {
      let index = fromIndex + 1
      // 从尾部遍历查询
      while (index--) {
        if (array[index] === value) {
          return index
        }
      }
      return index
    }
    // baseFindeIndex是通过谓词判定比较值是否相等
    
    • nth:返回数组的第n个元素
    function nth(array, n) {
      const length = array == null ? 0 : array.length
      if (!length) {
        return
      }
      // 判断n是否小于0
      n += n < 0 ? length : 0
      // isIndex判断n是否是有效的index,如果有效,返回array[n],否则,返回undefined
      return isIndex(n, length) ? array[n] : undefined
    }
    

    相关文章

      网友评论

          本文标题:每天一个lodash方法(8)

          本文链接:https://www.haomeiwen.com/subject/eddhwftx.html