typescript - 基于 rx.js 的属性将数组动态分离为子数组?
问题描述
我有下一个输入数组。它可以有不同的阶段。
[
{
"id": 1,
"phase": "Planning",
},
{
"id": 2,
"phase": "Planning",
},
{
"id": 3,
"phase": "Done",
}
]
基于阶段,我想将其转换为具有下一种格式的数组。
[{title: 'Planning',
datasets: {data: [/* 1st item will be here*/]},
{data: [/* 2nd item will be here*/]}]},
{title: 'Done',
datasets: [{data: [/* 1st item will be here*/]}]
}
];
我怎样才能做到这一点?
提前致谢
解决方案
不知道为什么你需要 rxjs,你可以只使用 javascript 来实现它。这是一个 ES6 实现:
let input = [
{
"id": 1,
"phase": "Planning",
},
{
"id": 2,
"phase": "Planning",
},
{
"id": 3,
"phase": "Done",
}
]
let response = {};
input.forEach(phaseObj=> {
if(!!response[phaseObj["phase"]])
response[phaseObj["phase"]].push({data: phaseObj})
else
response[phaseObj["phase"]] = [{data: phaseObj}]
})
response = Object.keys(response).map( key=> { return {title: key, datasets : response[key]}});
console.log(response)
如果你真的坚持使用 rxjs,你可以这样做:
let response = {};
Rx.Observable.from(input).map(phaseObj=> {
if(!!response[phaseObj["phase"]])
response[phaseObj["phase"]].push({data: phaseObj})
else
response[phaseObj["phase"]] = [{data: phaseObj}]
})
.toArray()
.subscribe( ()=> {
response = response = Object.keys(response).map( key=> { return {title: key, datasets : response[key]}});
console.log(response);
})
推荐阅读
- php - PHP:更新行时遇到问题
- python - 如何仅预测标签而不是概率
- python - 基于条件的上传文件动态命名
- c# - 如果计数器在特定持续时间内保持不变,则 C# UWP
- apache-camel - 捆绑依赖解析
- javascript - if 语句中的返回代码未运行,但如果我将其更改为返回变量,它正在运行。(原版 Javascript)
- php - 为什么我不能在 PHP 中捕捉到这个错误(在布尔值上调用函数)?
- wso2 - WSO2:从传出的 IBM MQ 消息中删除 MQRFH2 标头
- svg - 如何编辑 SVG 文件的文本?
- python - python-尝试使用复制模块创建火花数据帧的副本时出现递归错误