我有一个动态生成的对象。我需要获取该对象的某些字段(恰好是动态字段)并将其解析为数组。
在下面的代码中,我需要将塔[X]转换为对象数组。
{id: "", description: "Teste", towers[1]: true, towers[2]: true,
towers[3]: true, …}
description: "Test"
id: ""
towers[1]: true
towers[2]: true
towers[3]: true
towers[4]: ""
}
我希望它类似于:
{
id: ""
description: "Test",
towers[1]: true //Don't care if it stays here or not, will not use
...
}
还有一个新的数组,如:
{
[id: 1, value: true],
[id: 2, value: true],
[id: 3, value: true],
[id: 4, value: ""]
}
答案 0 :(得分:0)
只是猜测塔[0]会给出一个数字,如果可以,则可以这样做。这将找到所有具有布尔值的键,并保留它们并将它们附加到对象上。
const obj = YOUROBJHERE;
Object.keys(obj ).filter((key) => tyepof obj[key] === "boolean").reduce((accum, key) => {
return {...accum, [key]: obj[key]};
}, {})
答案 1 :(得分:0)
如果X = number并且obj是我们要转换的对象
let result = [];
for (let indx = 1; indx <=x ; i++) {
result.push({value:indx,value: obj['towers'+indx]})
}
答案 2 :(得分:0)
如果要变换对象数组,可以执行以下操作:
this.obj=this.obj.map(obj=>{
return {
id:obj.id,
description:obj.description,
towers:Object.keys(obj).filter((key) => key.indexOf('towers') != -1 )
.map((k,index)=>{
return {id:index+1,value:obj[k]}
})
.filter((x:any)=>x.value)
}
})
看到,地图允许一个“索引”(从0开始)