过滤后将对象保留为对象
Keep Object as Object after filtering
那是我的数据结构
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
函数是什么,这样 return 类型就已经是 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>
我的保留原始数据结构的命题:
const data = Immutable.fromJS({
data: {
1: {
foo: 'bar'
},
2: {
foo: 'foo'
},
3: {
foo: 'foobar'
},
},
});
const filtered = data.updateIn(
['data'],
v => v.filter(obj=>obj.get('foo') === 'bar'));
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>
您需要删除 .valueSeq()
。这就是将对象转换为数组
那是我的数据结构
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
函数是什么,这样 return 类型就已经是 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>
我的保留原始数据结构的命题:
const data = Immutable.fromJS({
data: {
1: {
foo: 'bar'
},
2: {
foo: 'foo'
},
3: {
foo: 'foobar'
},
},
});
const filtered = data.updateIn(
['data'],
v => v.filter(obj=>obj.get('foo') === 'bar'));
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>
您需要删除 .valueSeq()
。这就是将对象转换为数组