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中很少使用。