ImmutableJS Map,如何迭代地图并返回修改后的结果

时间:2017-03-27 19:29:24

标签: reactjs immutable.js

我正在尝试从const skipHeaders = [ 'layout', 'modules', 'enabled', 'captcha', 'settings'];删除 submissionsInForm.map((submission) => { const updatedSubmission = submission.deleteAll(skipHeaders); return updatedSubmission; }); 数组中列出的键。

findByReportingManager_IdAndAndLevel(Long reporterManagerId, Integer level)

select userhierar0_.id as id1_28_,
       userhierar0_.LEVEL as LEVEL5_28_,     
       userhierar0_.REPORTING_MANAGER_ID as REPORTIN9_28_,   
       userhierar0_.USER_ID as USER_ID10_28_ 
from   USER_HIERARCHY userhierar0_ 
       left outer join 
       USER_V3 user1_ on userhierar0_.REPORTING_MANAGER_ID=user1_.id 
where user1_.id=? and userhierar0_.CUSTOMER_ID=? and userhierar0_.LEVEL=?

该代码似乎不起作用,因为它返回完整的数据。无论如何要实现这一目标而不必转换为Vanilla JS?

1 个答案:

答案 0 :(得分:1)

<强>黑名单

您可以使用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}