Javascript 迭代并更改JSON中给定字段的所有匹配项
我有一个Javascript 迭代并更改JSON中给定字段的所有匹配项,javascript,string,function,object,ecmascript-6,Javascript,String,Function,Object,Ecmascript 6,我有一个JSON对象。 我需要更改给定字段的所有出现值。 例如: { email:"aaa@bbb.com", person: { email:"dfd@ffds.com" }, mother: { name: "AAA", email:"fdsfd@fdsfsd.com", friend: { email:"fdsd@gfsgf.com" } } } 我需要找到所有电子邮件字段,并
JSON
对象。我需要更改给定字段的所有出现值。
例如:
{
email:"aaa@bbb.com",
person: {
email:"dfd@ffds.com"
},
mother: {
name: "AAA",
email:"fdsfd@fdsfsd.com",
friend: {
email:"fdsd@gfsgf.com"
}
}
}
我需要找到所有电子邮件
字段,并根据它们的值
更改它们的值
我知道如何迭代JSON的一个级别,但我不知道如何迭代所有级别
谢谢!:-) 使用与我的答案相同的递归函数,只需稍加修改即可:
function changeEmail(obj, newEmail) {
Object.keys(obj).forEach(key => {
if (key == "email") {
obj[key] = newEmail;
}
if (typeof obj[key] == "object") {
changeEmail(obj[key], newEmail);
}
});
}
首先,这不是一个JSON
对象,而是一个简单的JavaScript对象
然后,您可以使用递归循环所有对象
级别,并检查迭代的属性
是否包含对象
,以便再次处理它,否则如果它是电子邮件
,请更改它
function process(obj) {
for (var key in obj) {
if (typeof obj[key] == 'object') {
process(obj[key]);
} else if (key == "email") {
obj[key] = "new email value";
}
}
}
注意:
我使用字符串“new email value”
作为email
的新值,但您可以使用所需的值对其进行相应更改
演示:
var数据={
电子邮件:“aaa@bbb.com",
人:{
电子邮件:“dfd@ffds.com"
},
母亲:{
名称:“AAA”,
电子邮件:“fdsfd@fdsfsd.com",
朋友:{
电子邮件:“fdsd@gfsgf.com"
}
}
}
功能过程(obj){
for(obj中的var键){
如果(对象的类型[键]=“对象”){
过程(obj[关键]);
}否则如果(键==“电子邮件”){
obj[key]=“新邮件值”;
}
}
}
过程(数据);
控制台日志(数据)代码>根据其值更改其值???可能重复@ellipsis是的,我想获取给定的电子邮件值并根据其值进行更改。例如如果(电子邮件=='abc@xyz.com“){email=”pqr@xyz.com“}
?