我正在解码一个对象,到目前为止我已经可以正常工作了。假设我有这个对象:
var person = [{
firstname: "Mike",
lastname: "123ñññ"
age: 20
}]
因此,为了解码 ñ
并呈现 ñ
,我只是这样做:
new DOMParser().parseFromString(person[0].lastname, "text/html").documentElement.textContent;
这将呈现值
ñññ
这是我想要的,所以它看起来像这样:
lastname: "ñññ"
但是,我面临的问题是我需要解码对象中每个属性的值,因为我可能会得到名字或其他属性的那些特殊字符。所以我的问题是假设对象可能如下所示如何解码对象的属性值:
var person = [{
name: "Mike",
lastname: "123ñññ"
age: 20,
employeer: {
name: 'ABC Company ñê',
supervisors:[
{
name: 'Steveä',
code: 'è468'
}
]
}
}]
注意:
我不需要解码对象上每个属性的值的帮助,因为我已经这样做了,我只需要想出一个递归函数来对嵌套对象执行此操作
最佳答案
我认为使用 DOMParser 进行递归解码是个好主意。这是一个就地变压器。先执行深拷贝,然后根据需要就地转换。
var person = [{
name: "Mike",
lastname: "123ñññ",
age: 20,
employer: {
name: 'ABC Company ñê',
supervisors: [
{
name: 'Steveä',
code: 'è468'
}
]
}
}];
console.log(person);
function htmlDecode(input)
{
var doc = new DOMParser().parseFromString(input, "text/html");
return doc.documentElement.textContent;
}
function fix(obj) {
for (let prop in obj) {
switch (typeof obj[prop]) {
case 'object':
fix(obj[prop]);
break;
case 'string':
obj[prop] = htmlDecode(obj[prop]);
break;
}
}
}
fix(person);
console.log(person);
关于javascript - 循环一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53888224/