复制JS对象并过滤掉某些属性的最简单方法

use*_*159 5 javascript ecmascript-6

如果我有一个 JS 对象,并且我想创建一个新对象来复制除需要过滤掉的属性黑名单之外的所有属性,那么最简单的方法是什么?

所以我会做类似的事情

originalObject.copyAndFilter('a', 'b')
Run Code Online (Sandbox Code Playgroud)

它会使用原来的对象,将它复制,并确保性能ab不在新的对象。

我正在通过 Babel 使用 ES2015/2016,所以如果它提供了一种更简单的方法也可以使用。

Nin*_*olz 2

您可以使用Set和删除不需要的属性。

var object = { a: 1, b: 2, c: 3, d: 4 },
    filteredObject = {},
    p = new Set(Object.keys(object));
    blacklist = ['a', 'b'];

blacklist.forEach(a => p.delete(a));

[...p].forEach(k => filteredObject[k] = object[k]);
console.log(filteredObject);
Run Code Online (Sandbox Code Playgroud)