React 的Accumulate类

107 阅读1分钟

AccumulateInto

简单的来说就是将传递的参数集合为一个数组并返回。 首先,这个方法的第一个参数不能是null或者是undefined。

function accumulateInto(current, next) {
 
  var currentIsArray = Array.isArray(current);
  var nextIsArray = Array.isArray(next);

  if (currentIsArray && nextIsArray) {
    current.push.apply(current, next);
    return current;
  }

  if (currentIsArray) {
    current.push(next);
    return current;
  }

  if (nextIsArray) {
    
    return [current].concat(next);
  }

  return [current, next];
}
    

如上便是AccumulateInto方法,如果两个参数都是数组就合并两个参数。 这里最值得学习的一个合并方法:

    <!--
        如果两个参数都是数组的话就合并两个数组,用下边的方法合并两个数组,这个方法组合数组比concat方法效率更高。
    -->
    current.push.apply(current, next);

除此之外这整个的方法就是判断两个参数是不是数组,而后分别进行不同的处置。最终都是返回一个数组,整个数组包含两个参数。

另一个重要函数 accumulate

这个方法主要是要求两个参数都不能是null或者是undefined。

    <!--
        这是这个方法的核心。
        这里使用了current.concat(next)方法来拼接next,这里有一个缺漏。就是万一next不是一个数组,这个方法用起来就会很危险。
    -->
    var currentIsArray = Array.isArray(current);
    var nextIsArray = Array.isArray(next);
    if (currentIsArray) {
      return current.concat(next);
    } else {
      if (nextIsArray) {
        return [current].concat(next);
      } else {
        return [current, next];
      }
    }

这个方法在React中很少使用。