在 JavaScript 中,我有以下Set:
var mySet = new Set(["foo", "bar", "baz"]);
var valuesToRemove = new Set(["foo", "baz"]);
Run Code Online (Sandbox Code Playgroud)
我需要一个删除一组值的函数:
removeAll(mySet, valuesToRemove);
// expected value of mySet: Set ["bar"]
// or a function that returns a new Set
var myNewSet = removeAll(mySet, valuesToRemove);
// expected value of myNewSet: Set ["bar"]
Run Code Online (Sandbox Code Playgroud)
问题:是否存在任何与ES6 模块兼容的库来解决这个问题?
Lodash对Array有类似的功能,但支持 JavaScript内置可迭代被标记为。而且我更喜欢避免进行多次 Array?Set/Set?Array 转换。wontfix
或者,我将编写自己的函数。
编写自己的函数比使用库来实现单个轻量级功能要容易得多:
var mySet = new Set(["foo", "bar", "baz"]);
var valuesToRemove = new Set(["foo", "baz"]);
function removeAll(originalSet, toBeRemovedSet) {
[...toBeRemovedSet].forEach(function(v) {
originalSet.delete(v);
});
}
console.log([...mySet]);
removeAll(mySet, valuesToRemove);
console.log([...mySet]);Run Code Online (Sandbox Code Playgroud)
根据您的问题,自从您使用 ES6 以来,我一直使用 ES6 语法。为方便起见,
您可以在静态类中使用此函数SetUtility。
您可以使用for..of循环.delete()
var removeAll = (keys, arr) => {for (prop of keys) arr.delete(prop); return arr};
removeAll(valuesToRemove, mySet); // `Set [ "bar" ]`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8948 次 |
| 最近记录: |