在一个级别上获得多个元素ImmutableJS

时间:2018-09-05 10:27:24

标签: javascript immutable.js

我有一个看起来像的物体

const foo = Immutable.fromJS(
    {
        90234:
        {
            bar: 'a'
            metaData: { },
            comment: 'abc',
            photos: [1,2,3,4,5]
        }
    }
)

如何使用'ImmutableJS'在同一行中获得commentsphotos

foo.get('90234')....?

1 个答案:

答案 0 :(得分:0)

当不可变类型将其内容装箱时,您不能“返回”两个不同的内容,但是可以像这样映射键-

foo.get('90234')
   .values()
   .map((value, key)=> key=="comments"?doSomething(value): (key=="photos")?doSomethingElse(value):"")

另一种可能性是返回一个仅包含“评论”和“照片”的新对象,像这样-

let subSet = foo.get('90234').reduce(
    (accumulator, value, key)=>{
        if (key == "photos" || key == "comments"){
            return accumulator.set(key, value);
        }
        return accumulator;
    },
    new Map()
)