javascript - 循环一个对象

标签 javascript

我正在解码一个对象,到目前为止我已经可以正常工作了。假设我有这个对象:

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/

相关文章:

javascript - Angularjs 使用 url 重定向到状态

javascript - 向函数发送参数返回无法读取未定义的属性 'props'

Javascript正则表达式提取标题和iframe

javascript - jQuery 获取 "event invoking"元素

javascript - 从 HTML 创建数组以通过 AJAX 发送

javascript - GWT 和 JxBrowser - 有什么经验吗?

javascript - 让几个按钮在页面刷新时保持事件状态?

javascript - 我可以使用 forEach 使数组的每个元素成为一个新对象吗?

javascript - Angular - 自动更新数据而不刷新页面

JavaScript 对象从一个方法调用另一个方法