javascript - 重命名包含子对象的对象中的键
问题描述
我想重命名一个对象中的键,该对象包含看起来相同的子对象。
这是我的起始对象:
objs = {
"one":{
"title":"bla",
"amount":5,
"children":[
{
"title":"bla",
"identifier":"some text"
},
{
"title":"bla2",
"identifier":"some text2"
}
]
},
"two":{
"title":"bla",
"amount":5,
"children":[
{
"title":"bla",
"identifier":"some text"
},
{
"title":"bla2",
"identifier":"some text2"
}
]
}
}
我希望它把它变成这样:
objs = {
"one":{
"text":"bla",
"amount":5,
"items":[
{
"text":"bla",
"identifier":"some text"
},
{
"text":"bla2",
"identifier":"some text2"
}
]
},
"two":{
"text":"bla",
"amount":5,
"items":[
{
"text":"bla",
"identifier":"some text"
},
{
"text":"bla2",
"identifier":"some text2"
}
]
}
}
所以基本上我想将每个键重命名children
为items
和每个键title
,text
无论对象子对象有多深。我已经尝试spread & Destructuring Assignment
在 foreach 循环中使用,但效果不佳..
解决方案
也许是这样的:
var objs = {
"one":{
"title":"bla",
"amount":5,
"children":[
{
"title":"bla",
"identifier":"some text"
},
{
"title":"bla2",
"identifier":"some text2"
}
]
},
"two":{
"title":"bla",
"amount":5,
"children":[
{
"title":"bla",
"identifier":"some text"
},
{
"title":"bla2",
"identifier":"some text2"
}
]
}
};
function transorm_obj(_obj){
var out = [];
for(var key in _obj){
var new_obj = {};
for(var prop in _obj[key]){
if(prop == 'children'){
new_obj['items'] = transorm_obj(_obj[key][prop]);
}else if(prop == 'title'){
new_obj['text'] = _obj[key][prop];
}else{
new_obj[prop] = _obj[key][prop];
}
}
out.push(new_obj);
}
return out;
}
console.log(transorm_obj(objs));
推荐阅读
- javascript - download file pdf- javascript
- css - How to remove hover effect from kendo grid row that is using bootstrap
- unity3d - How can you receive gaze events when making a windowed HoloLens app using HoloToolKit
- python - 多线程蛮力脚本python
- python - 在 PyCharm 上安装 pandas-datareader 时出错(缺少 libxml2)
- vuejs2 - 当组件安装vue js时,我无法使用querySelector选择元素
- java - 使用 Jackson 使用嵌套对象序列化 POJO
- python - 熊猫数据框中的对称列值
- android - React Native运行android错误找不到方法google()
- arrays - 是否可以将 Arrayformula、Transpose 和 Sequence 结合起来?