首页 > 解决方案 > 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 中执行此操作,还是我必须自己动手?

标签: javascriptarraysecmascript-6

解决方案


您可以将数组作为所需结果的临时存储。

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>


推荐阅读