Immutable.js 中的 GroupBy,然后是 return 分组列表的第一个值
GroupBy in Immutable.js and then return first value of grouped List
是否可以在Immutable.js到groupBy()
一个值,比如说id
,然后在map()
里面基本上取组的第一个值追加一个新的属性 然后 return 那个单品?如果没有,有人对如何使这项工作有建议吗?
fromJS([ {'id':1, 'x':2},
{'id':2, 'x':3},
{'id':2, 'x':4}
])
.groupBy(item => item.get('id'))
.map(values => {
let item = values.first();
return item.merge({
xs: values.map(d => d.get('x'))
})
});
// expected output as a List() -
[
{'id':1, 'x':2, 'xs': [2]},
{'id':2, 'x':3, 'xs': [3, 4]}
]
是的,你可以 groupBy
id,你实际上非常接近你想要的解决方案,但缺少 .toArray()
。
var out = Immutable.fromJS([
{'id':1, 'x':2},
{'id':2, 'x':3},
{'id':2, 'x':4}
])
.groupBy(item => item.get('id'))
.map(values => {
let item = values.first();
return item.merge({
xs: values.map(d => d.get('x'))
});
}).toArray();
console.log(JSON.stringify(out));
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
jsfiddle 也可以在这里找到:https://fiddle.jshell.net/rguf75fc/
是否可以在Immutable.js到groupBy()
一个值,比如说id
,然后在map()
里面基本上取组的第一个值追加一个新的属性 然后 return 那个单品?如果没有,有人对如何使这项工作有建议吗?
fromJS([ {'id':1, 'x':2},
{'id':2, 'x':3},
{'id':2, 'x':4}
])
.groupBy(item => item.get('id'))
.map(values => {
let item = values.first();
return item.merge({
xs: values.map(d => d.get('x'))
})
});
// expected output as a List() -
[
{'id':1, 'x':2, 'xs': [2]},
{'id':2, 'x':3, 'xs': [3, 4]}
]
是的,你可以 groupBy
id,你实际上非常接近你想要的解决方案,但缺少 .toArray()
。
var out = Immutable.fromJS([
{'id':1, 'x':2},
{'id':2, 'x':3},
{'id':2, 'x':4}
])
.groupBy(item => item.get('id'))
.map(values => {
let item = values.first();
return item.merge({
xs: values.map(d => d.get('x'))
});
}).toArray();
console.log(JSON.stringify(out));
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.js"></script>
jsfiddle 也可以在这里找到:https://fiddle.jshell.net/rguf75fc/