从数组中选择/过滤对象并将其从原始数组中删除的 Javascript (ES6) 方法

标签 javascript arrays ecmascript-6

<分区>

有没有办法过滤对象数组以检索我需要的值数组,同时从原始列表中删除过滤后的值。像这样

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>

关于从数组中选择/过滤对象并将其从原始数组中删除的 Javascript (ES6) 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54196813/

相关文章:

c - 如何将字符串标记输入二维数组?

javascript - 从 JavaScript 中的对象中删除值

javascript - 在es6中导入带有参数的IIFE?

javascript - Firefox 在表格单元格中的绝对位置

javascript - bundle.js 是如何将样式内容注入(inject)到 index.html 中的?

javascript - 如何将动态值传递给字节数组

c++ - 在 C++ 中将正 float 组转换为带舍入的无符号短数组

javascript - 获取一系列连接的项目

javascript - 通过 ReactJS 中的组件传递属性,ES6 示例

javascript - Kendo UI 中 ListView 的日期过滤器