gpt4 book ai didi

javascript - 通过过滤函数划分数组

转载 作者:IT王子 更新时间:2023-10-29 02:56:49 25 4
gpt4 key购买 nike

我有一个 Javascript 数组,我想根据对每个元素调用的函数返回 true 还是 false 将其分成两部分。本质上,这是一个 array.filter,但我还希望手头上有被过滤掉的元素。

目前,我的计划是使用array.forEach 并对每个元素调用谓词函数。根据这是真还是假,我会将当前元素推送到两个新数组之一。有没有更优雅或更好的方法来做到这一点?例如,array.filter 会将元素推送到另一个数组,然后返回 false

最佳答案

在 ES6 中,你可以使用 reduce 的扩展语法:

function partition(array, isValid) {
return array.reduce(([pass, fail], elem) => {
return isValid(elem) ? [[...pass, elem], fail] : [pass, [...fail, elem]];
}, [[], []]);
}

const [pass, fail] = partition(myArray, (e) => e > 5);

或者在一行中:

const [pass, fail] = a.reduce(([p, f], e) => (e > 5 ? [[...p, e], f] : [p, [...f, e]]), [[], []]);

关于javascript - 通过过滤函数划分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com