Javascript 过滤后将对象保留为对象

Javascript 过滤后将对象保留为对象,javascript,immutable.js,Javascript,Immutable.js,这就是我的数据结构 const data = Immutable.fromJS({ 1: { foo: 'bar' ... }, 2: { foo: 'foo' ... }, 3: { foo: 'foobar' ... }, }, }); 我想过滤

这就是我的数据结构

const data = Immutable.fromJS({
        1: {
            foo: 'bar'
            ...
        },
        2: {
            foo: 'foo'
            ...
        },
        3: {
            foo: 'foobar'
            ...
        },
    },
});
我想过滤数据,我需要我的
filteredData
是完全相同的类型-
不可变对象
。当我跑的时候

const filtered = data.get('data').valueSeq().filter(obj => {
    ...
    return obj;
});
我得到这个
[{},{},{},{},…]


我需要它是这样的(作为输入数据)
{1:{…},2:{…},3:{…}
。什么是正确的
过滤器
函数,以便返回类型已经是
映射
而不是
数组
。或者没有类似的东西。

过滤后,您的对象仍然是不可变对象(参见示例)

const data=Immutable.fromJS({
数据:{
1: {
福:“酒吧”
},
2: {
福:“福”
},
3: {
foo:‘foobar’
},
},
小猫:{}
});
const res=data.get('data').filter(obj=>obj.get('foo')=='bar');
控制台日志(res);
//仍然不变的对象
console.log(res.get('1'))

我的主张保留原始数据结构:

const data=Immutable.fromJS({
数据:{
1: {
福:“酒吧”
},
2: {
福:“福”
},
3: {
foo:‘foobar’
},
},
});
const filtered=data.updateIn(
[“数据”],
v=>v.filter(obj=>obj.get('foo')=='bar');
console.log(过滤)

您需要删除
.valueSeq()
。这就是将对象转换为数组的过程

我也认为在我读入它之后,您的速度要快得多^_^