[英]How to delete key in object and replace with its value?
我有一个示例JSON
var obj={
"results":{
"grade":"A",
"marks":12
},
"data":{
"name":"sam",
"gender":"male",
"age":10
}
};
现在我想将上面的json转换为:
var obj={
"results":{
"grade":"A",
"marks":12
},
"name":"sam",
"age":10
}
我在每个循环中使用
for(var exKey in obj) {
if(exKey=='data'){
//replace key data with its value
}
}
但是我无法弄清楚这样做的逻辑。 那么有人可以在这里帮助我如何实现这一目标? 感谢您的所有回复,但是,如果iam具有一些复杂的json,例如:
var obj={
"results":{
"grade":"A",
"res":"fail",
"marks":12
},
"data":{details:{"name":"sam",
"gender":"male",
"age":10
}
},
"feespaid":"yes",
"joindate":"sunday"
};
现在,如果我想修改或删除键值中的某些键,例如
var obj={
"results":{
"grade":"A",
"marks":12
},
"data":{details:{"name":"sam",
"age":10
}
},
"joindate":"sunday"
};
那么我们如何进入json并删除
使用inner
for-in
循环并使用bracket-notation
将variable
分配为object
key
var obj = { "results": { "grade": "A", "marks": 12 }, "data": { "name": "sam", "gender": "male", "age": 10 } }; for (var exKey in obj) { if (exKey == 'data') { for (var d in obj.data) { if (d != 'gender') obj[d] = obj.data[d]; } delete obj.data; } } console.log(obj);
编辑:仅从Object
删除一些keys
,请使用delete
关键字
var obj = { "results": { "grade": "A", "res": "fail", "marks": 12 }, "data": { details: { "name": "sam", "gender": "male", "age": 10 } }, "feespaid": "yes", "joindate": "sunday" }; delete obj.results.res; delete obj.data.details.gender; delete obj.feespaid; console.log(obj);
一种不使用循环的方法:
obj.name = obj.data.name;
obj.age = obj.data.age;
delete obj.data;
使用for-in循环的另一种方式:
for(item in obj.data) obj[item] = obj.data[item]; // Add items from obj.data to obj
delete obj.gender; // Remove gender
delete obj.data; // Remove obj.data
片段:
var obj={ "results":{ "grade":"A", "marks":12 }, "data":{ "name":"sam", "gender":"male", "age":10 } }; for(item in obj.data) obj[item] = obj.data[item]; delete obj.gender; delete obj.data; console.log(obj)
for (var exKey in obj) {
if(exKey=='data') {
for (var dataKey in obj[exKey]) {
obj[dataKey] = obj[exKey][dataKey];
}
delete obj[exKey];
}
}
(我需要研究下面的解决方案)
编辑:删除嵌套的属性可以这样完成:
var invalidProperties = ['gender', 'feespaid']; //add more if needed function recursivelyDeleteProperties(obj) { for (var key in obj) { if(invalidProperties.indexOf(key) !== -1) { delete obj[key]; } else { recursivelyDeleteProperties(obj[key]); } } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.