尝试将对象字符串化时遇到递归问题。
我想知道是否有人知道在替换器中通过 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”属性中的每个引用。 我认为更简单的方法是先将其字符串化……:)
最佳答案
我会假设你所说的“引用”(a
,b
& 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/