collection/partition.jsjavascript
import { entries, toIteratee } from '../_internal/iteratee'
/**
* 将集合拆分为满足条件和不满足条件的两个数组。
* @function partition
* @memberof module:collection
* @param {Array|Object} collection 要遍历的集合
* @param {Function|string|number|Array|Object} [predicate] 判断函数或简写
* @returns {Array<Array<*>>} [满足条件元素, 其余元素]
* @throws {TypeError} 集合或 predicate 类型不正确时抛出
*/
function partition(collection, predicate) {
const fn = toIteratee(predicate)
return entries(collection).reduce((result, [key, value]) => {
result[fn(value, key, collection) ? 0 : 1].push(value)
return result
}, [[], []])
}
export default partition