javascript - JSON.stringify() - 如何知道替换器的当前深度

标签 javascript json parsing

尝试将对象字符串化时遇到递归问题。

我想知道是否有人知道在替换器中通过 key -> value 迭代时的当前深度是多少? 我想用 ID 替换引用,但仅当我处于特定深度时。

这里有一个极简主义的对象来举例:

var a = {
  id: 'idOfA',
  linkedItems: []
};

var b = {
  id: 'idOfB',
  linkedItems: []
};

var c = {
  id: 'idOfC',
  linkedItems: []
};

a.linkedItems.push({
  from: 0,
  to: 0,
  item: b
});
b.linkedItems.push({
  from: 0,
  to: 0,
  item: a
}, {
  from: 0,
  to: 0,
  item: c
});
c.linkedItems.push({
  from: 0,
  to: 0,
  item: a
}, {
  from: 0,
  to: 0,
  item: b
});

var obj = {
  things: {},
  otherThings: {},
  items: [a, b, c]
};

在 obj 中,我需要用它们的 id 替换“linkedItems”属性中的每个引用。 我认为更简单的方法是先将其字符串化……:)

最佳答案

我会假设你所说的“引用”(ab & c)是 String 。

var a="SA", b="SB", c="SC" ;

var obj = {
  things: {},
  otherThings: {},
  items: {
    a: {
      _id: 'idOfA',
      linkedItems: [b, c]
    },
    b: {
      _id: 'idOfB',
      linkedItems: [a]
    },
    c: {
      _id: 'idOfC',
      linkedItems: [a, b]
    }
  }
}
function getID(attr){
   var mapping={'SA':'a','SB':'b','SC':'c'};
   return obj.items[mapping[attr]]._id;
   

};

Object.keys(obj.items).map((value, index) =>{
  obj.items[value].linkedItems = obj.items[value].linkedItems.map((e)=>getID(e));
});

console.log(obj)

关于javascript - JSON.stringify() - 如何知道替换器的当前深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38666250/

相关文章:

javascript - 根据条件 angularjs 动态添加 colspan 值

javascript - 如何将文本光标隐藏在 div 元素下方

php - 数组在localhost中工作,但不在服务器上

angularjs - 我想在每行之前添加行号,我正在使用 angularJs json 过滤器

检查 strtol 不成功的转换

java - Xtext运行时编译

javascript - 使用 Twilio Node 模块接收文本消息并用文本消息响应

javascript - 一个突出显示 json 的网页编辑器,就像 postman 的结果区域一样

javascript - 如何解析 Rest Api json 响应并将数据插入 Jade 模板(Node.js + express)?

javascript - 使用 JS 服务器时间而不是客户端时间来避免这种行为,即用户可以通过更改本地计算机时钟来操纵结果