33 lines
720 B
JavaScript
33 lines
720 B
JavaScript
|
'use strict';
|
||
|
|
||
|
module.exports = function partition(fn) {
|
||
|
var _this = this;
|
||
|
|
||
|
var arrays = void 0;
|
||
|
|
||
|
if (Array.isArray(this.items)) {
|
||
|
arrays = [new this.constructor([]), new this.constructor([])];
|
||
|
|
||
|
this.items.forEach(function (item) {
|
||
|
if (fn(item) === true) {
|
||
|
arrays[0].push(item);
|
||
|
} else {
|
||
|
arrays[1].push(item);
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
arrays = [new this.constructor({}), new this.constructor({})];
|
||
|
|
||
|
Object.keys(this.items).forEach(function (prop) {
|
||
|
var value = _this.items[prop];
|
||
|
|
||
|
if (fn(value) === true) {
|
||
|
arrays[0].put(prop, value);
|
||
|
} else {
|
||
|
arrays[1].put(prop, value);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return new this.constructor(arrays);
|
||
|
};
|