美文网首页让前端飞
每天一个lodash方法(6)

每天一个lodash方法(6)

作者: 公子七 | 来源:发表于2018-08-24 10:38 被阅读3次

fromPairs

功能:将数组解析成对象。

@pairs: 需要解析的键值对数组
@result: 返回的对象
function fromPairs(pairs) {
      var index = -1,
          length = pairs == null ? 0 : pairs.length,
          result = {};
     // 遍历数组,对象赋值
      while (++index < length) {
        var pair = pairs[index];
        result[pair[0]] = pair[1];
      }
      return result;
    }

indexOf

功能:从指定位置(fromIndex,默认为0)开始查询数组array中第一个值为value的元素,返回该元素下标。

function indexOf(array, value, fromIndex) {
  const length = array == null ? 0 : array.length
  if (!length) {
    return -1
  }
  let index = fromIndex == null ? 0 : +fromIndex
  // 确定起始位置,并对位置进行判断
  if (index < 0) {
    index = Math.max(length + index, 0)
  }
  // 核心查询方法
  return baseIndexOf(array, value, index)
}

// baseIndexOf
function baseIndexOf(array, value, fromIndex) {
  // 根据类型的不同,执行不同的查找方法,但是核心查找方法都是遍历比较
  return value === value
    ? strictIndexOf(array, value, fromIndex)
    : baseFindIndex(array, baseIsNaN, fromIndex)
}

// strictIndexOf
function strictIndexOf(array, value, fromIndex) {
  let index = fromIndex - 1
  const { length } = array

  while (++index < length) {
    if (array[index] === value) {
      return index
    }
  }
  return -1
}

// baseFindIndex类似,不同之处在于将判断相等变成了谓词判定

initial

功能:返回数组除最后一个之外的所有元素。
方法:slice切割。

 function initial(array) {
  const length = array == null ? 0 : array.length
  return length ? slice(array, 0, -1) : []
}

相关文章

网友评论

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

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