javascript - Javascript(ES6)从数组中选择/过滤对象并将它们从原始数组中删除的方法
问题描述
有没有办法过滤对象数组以检索我需要的值数组,但也可以从原始列表中删除过滤后的值。像这样的东西
let array = [1, 2, 3, 4, 5];
const filteredList, listContainingRemainingValues = array.filter(value => value > 3);
输出:
filteredList = [4, 5];
listContainingRemainingValues = [1, 2, 3];
是否有任何内置功能可以在 Javascript 中执行此操作,还是我必须自己动手?
解决方案
您可以将数组作为所需结果的临时存储。
const
array = [1, 2, 3, 4, 5],
[remaining, filtered] = array.reduce((r, v) => (r[+(v > 3)].push(v), r), [[], []]);
console.log(filtered);
console.log(remaining);
和 lodash 的一样_.partition
const
array = [1, 2, 3, 4, 5],
[filtered, remaining] = _.partition(array, v => v > 3);
console.log(filtered);
console.log(remaining);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>