【问题标题】:How can I use Ramda's omit() function on a deeply nested object member in javascript如何在 javascript 中深度嵌套的对象成员上使用 Ramda 的 omit() 函数
【发布时间】:2019-03-05 06:14:06
【问题描述】:

我有一种情况,我想在展平和导出到 CSV 之前删除对象树的任何部分。 Ramda 是我在 JS 中为 FP 选择的库,但我注意到 R.omit() 函数仅在目标对象的一层深处起作用。我怎样才能做到以下几点?

const R = require('ramda');

const obj = {
    id: 1,
    name: 'me',
    audience_sizes: {
        fb: 500,
        dfp: 2000,
        apn: 1800
    }
};

console.log(JSON.stringify(R.omit(['id', 'audience_sizes.fb'], obj)));

我希望得到以下结果:

{"name":"me","audience_sizes":{"dfp":2000, "apn": 1800}}

【问题讨论】:

    标签: javascript eval javascript-objects ramda.js


    【解决方案1】:

    我认为Lenses 是一种更实用的方式。

    R.over(R.lensProp('audience_sizes'), R.omit(['fb']), R.omit(['id'], obj));
    

    【讨论】:

    • 谢谢。我是 Ramda 的新手,我不知道这个功能。可以为我解决很多问题!
    【解决方案2】:

    DissocPath 看起来像您要找的东西。使用它或镜头进行更复杂的深度更新。

    【讨论】:

    • 谢谢。这大大缩短了我的omitDeep 函数!
    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2020-10-14
    • 2020-06-13
    • 2020-06-28
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多