javascript - 过滤后将对象保留为对象

标签 javascript immutable.js

这是我的数据结构

const data = Immutable.fromJS({
        1: {
            foo: 'bar'
            ...
        },
        2: {
            foo: 'foo'
            ...
        },
        3: {
            foo: 'foobar'
            ...
        },
    },
});

我想过滤数据,我需要我的 filteredData 是完全相同的类型 - Immutable Object。当我运行时

const filtered = data.get('data').valueSeq().filter(obj => {
    ...
    return obj;
});

我得到这个 [{}, {}, {}, ...]

我需要它像这样(作为输入数据){1: {...}, 2: {...}, 3: {...}}。正确的 filter 函数是什么,以便返回类型已经是 Map 而不是 Array。或者没有这样的东西。

最佳答案

过滤后你的对象仍然是一个 ImmutableObject(见例子)

const data = Immutable.fromJS({
    data: {
        1: {
            foo: 'bar'
        },
        2: {
            foo: 'foo'
        },
        3: {
            foo: 'foobar'
        },
    },
    kittens: {}
});

const res = data.get('data').filter(obj=>obj.get('foo') === 'bar');
console.log(res);

//still immutable object
console.log(res.get('1'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>

关于javascript - 过滤后将对象保留为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53338923/

相关文章:

immutable.js - 如何洗牌 ImmutableJS 列表

javascript - Using Redux.createStore with Immutable 抛出“reducer is not a function”(How to use Redux with Immutable.js ans composeEnhancers)

javascript - 在指令之间共享公共(public)代码

javascript - 在javascript中扩展数组符号

javascript - Google OAuth 按钮不起作用

javascript - Immutable.is() 可以接受任何 Immutable 类型吗?

javascript - 我应该对仅具有函数的对象使用不变性吗?

javascript - 每次使用网页动画都会加快速度

javascript - 如何找到日期之间的持续时间?

javascript - Immutable.js:表示 2D 游戏领域的数据结构