Partition an array based on a condition

This function partitions an array into two arrays based on a condition.

JavaScript:

let partition = (arr, pred) => arr.reduce(([pass, fail], elem) => pred(elem) ? [[...pass, elem], fail] : [pass, [...fail, elem]], [[], []]);

// Example
console.log(partition([1, 2, 3, 4, 5], n => n % 2)); // [[1, 3, 5], [2, 4]]
console.log(partition(['apple', 'banana', 'cherry'], fruit => fruit[0] === 'a')); // [['apple'], ['banana', 'cherry']]

TypeScript:

let partition = (arr: T[], pred: (arg: T) => boolean): [T[], T[]] => arr.reduce(([pass, fail], elem) => pred(elem) ? [[...pass, elem], fail] : [pass, [...fail, elem]], [[], []]);

// Example
console.log(partition([1, 2, 3, 4, 5], n => n % 2)); // [[1, 3, 5], [2, 4]]
console.log(partition(['apple', 'banana', 'cherry'], fruit => fruit[0] === 'a')); // [['apple'], ['banana', 'cherry']]
Member since January 2, 2019

As a seasoned WordPress developer with expertise in various tech stacks and languages, I bring years of experience to every project I handle. My passion for coding and dedication to delivering exceptional work ensures that each project I take on is of the highest quality. I specialize in creating custom themes, developing plugins, and building full-scale web systems. By staying up-to-date with the latest industry trends and best practices, I incorporate cutting-edge solutions into my work.

Comments

    Your email address will not be published. Required fields are marked *