美文网首页
每天一个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