我正在開發使用AngularJS和Lodash的應用程序。我需要執行以下操作的轉換函數:
從
{
a: 0,
b: {x: {y: 1, z: 2}},
c: 3
}
到
{
a: 0,
'b.x.y': 1,
'b.x.z': 2,
c: 3
}
現在,我使用的是遞歸函數通過對象來遍歷。暫且,我的代碼看起來像(不全):
var obj = {},
keys, property, value;
var recur = function (mat) {
keys = Object.keys(mat);
for (var i = 0; i < keys.length; i++) {
property = keys[i];
value = mat[property];
if (isObj(value)) {
//debugger;
recur(value);
} else {
obj[property] = value;
}
}
}
recur({
a: 0,
b: {x: {y: 1, z: 2}},
c: 3
});
console.log(obj);
function isObj(value) {
return typeof value === "object";
}
一個問題是我收到的同時調試:
我沒有被遞增;在最高級別的遞歸調用期間,我仍爲0.
任何人都知道爲什麼? 如果你知道有任何其他方式進行這種轉換,請分享它。
親切的問候。
B:{X:{Y:1},{Z :2}}不是有效的json – marvel308
@ marvel308:根本沒有JSON。你說得對,'b:{x:{y:1},{z:2}},'包含一個無效的對象初始值設定項。 –
yup我想'b:{x:{y:1},{z:2}}'應該是'b:{x:[{y:1},{z:2}]} –