ImmutableJS Map,如何遍历映射并返回修改后的结果



我正在尝试从submissionsInForm中删除skipheaders数组中列出的键。

const skipHeaders = [ 'layout', 'modules', 'enabled', 'captcha', 'settings'];

submissionsInForm.map((submission) => {
const updatedSubmission = submission.deleteAll(skipHeaders);
return updatedSubmission;
});

该代码似乎不起作用,因为它返回了完整数据。有没有办法在不转换为香草 JS 的情况下实现这一目标?

黑名单

您可以使用 Map#filter 删除该键出现在黑名单中的任何键/值对

// where Map is Immutable.Map
const m = Map({a: 1, b: 2, c: 3, d: 4})
const blacklist = ['a', 'b']
m.filter((v,k) => !blacklist.includes(k))
// => {"c": 3, "d": 4}

白名单

你的对象被称为submissionsInForm所以我猜这些是用户提供的值。在这种情况下,我认为将您的字段列入名单比像我们上面那样列入黑名单要好得多

请注意,这次我们将向输入m添加更多字段,但我们的结果将是相同的,而无需更改白名单。当您想要显式声明用户可以提交的字段时,这很好 - 所有其他字段都将被拒绝。

const m = Map({a: 1, b: 2, c: 3, d: 4, admin: 1, superuser: true})
const whitelist = ['c', 'd']
m.filter((v,k) => whitelist.includes(k))
// => {"c": 3, "d": 4}

最新更新