Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除对象中的键并替换为其值?_Javascript_Json - Fatal编程技术网

Javascript 如何删除对象中的键并替换为其值?

Javascript 如何删除对象中的键并替换为其值?,javascript,json,Javascript,Json,我有一个类似json的示例 var obj={ "results":{ "grade":"A", "marks":12 }, "data":{ "name":"sam", "gender":"male", "age":10 } }; 现在我想将上面的json转换为: var obj={ "results":{ "grade":"A", "mar

我有一个类似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
    }
}
但我无法理解这样做的逻辑。 有人能帮我吗?我该怎么做? 谢谢你的回复, 但是如果我有一些复杂的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内部删除使用
内部
for in
循环,并使用
括号表示法
变量指定为
对象的

var obj={
“结果”:{
“等级”:“A”,
“分数”:12分
},
“数据”:{
“姓名”:“山姆”,
“性别”:“男性”,
“年龄”:10岁
}
};
for(obj中的var exKey){
如果(exKey==“数据”){
for(对象数据中的变量d){
如果(d!=‘性别’)对象[d]=对象数据[d];
}
删除对象数据;
}
}

控制台日志(obj)
使用
内部
进行in
循环,并使用
括号符号
变量
指定为
对象的

var obj={
“结果”:{
“等级”:“A”,
“分数”:12分
},
“数据”:{
“姓名”:“山姆”,
“性别”:“男性”,
“年龄”:10岁
}
};
for(obj中的var exKey){
如果(exKey==“数据”){
for(对象数据中的变量d){
如果(d!=‘性别’)对象[d]=对象数据[d];
}
删除对象数据;
}
}
控制台日志(obj)
(我需要进一步研究下面的解决方案)
编辑:删除嵌套属性的操作如下:

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]);
        }
    }
}

(我需要进一步研究下面的解决方案) 编辑:删除嵌套属性的操作如下:

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]);
        }
    }
}

一种不使用循环的方法:

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={
“结果”:{
“等级”:“A”,
“分数”:12分
},
“数据”:{
“姓名”:“山姆”,
“性别”:“男性”,
“年龄”:10岁
}
};
对于(对象数据中的项目)对象[项目]=对象数据[项目];
删除obj.gender;
删除对象数据;

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={
“结果”:{
“等级”:“A”,
“分数”:12分
},
“数据”:{
“姓名”:“山姆”,
“性别”:“男性”,
“年龄”:10岁
}
};
对于(对象数据中的项目)对象[项目]=对象数据[项目];
删除obj.gender;
删除对象数据;

console.log(obj)
它起作用了。我如何删除该性别键及其值der?@HVarma-我已使用
if(d!=“gender”)在提供的代码中删除了
gender
谢谢..如果我想删除结果键中的分数,我们该怎么办?谢谢Rayon。我发布了错误的json。我在问题中添加了一个新的json。你能看一看吗?帮我解决问题。我如何删除那个性别键及其值der?@HVarma-我已经在提供的代码中使用
if(d!=“gender”)
删除了
性别
,谢谢。。如果我想删除结果键中的分数,我们该怎么办?.谢谢Rayon.我发布了错误的json.我在问题中添加了一个新的..你能看一看吗a help me Out谢谢@Spencer.我共享了错误的json der.我在我的问题下面发布了一个新的json.你能在这方面帮助我吗?谢谢@Spencer.我共享了错误的json der.我在我的问题下面发布了一个新的json der问题。你能帮我吗谢谢你的回复。我错分享了错误的json。我在下面的问题中发布了一个新的json。你能帮我吗that@HVarma现在,看看这是否适合你的问题。谢谢你的回复。我错误地共享了错误的json。我在下面的问题中发布了一个新的json。你能帮我吗that@HVarma现在看,看看这是否适合你的问题。