对不起,我不知道怎么用短语来标题.请尽可能帮助编辑.
我有一个像这样的对象:
{ a: 'jack', b: { c: 'sparrow', d: { e: 'hahaha' } } }
我想让它看起来像:
{ 'a': 'jack', 'b.c': 'sparrow', 'b.d.e': 'hahaha' } // so that I can use it this way: a['b.d.e']
jQuery也可以.我知道嵌套对象,我可以用a.b.d.e
得到hahaha
,但是今天我不得不使用它像a['b.d.e']
-_- !!! 我怎样才能做到这一点?提前致谢 :)
您可以使用递归函数来抓取对象并为您展平它.
var test = {
a: 'jack',
b: {
c: 'sparrow',
d: {
e: 'hahaha'
}
}
};
function dive(currentKey, into, target) {
for (var i in into) {
if (into.hasOwnProperty(i)) {
var newKey = i;
var newVal = into[i];
if (currentKey.length > 0) {
newKey = currentKey + '.' + i;
}
if (typeof newVal === "object") {
dive(newKey, newVal, target);
} else {
target[newKey] = newVal;
}
}
}
}
function flatten(arr) {
var newObj = {};
dive("", arr, newObj);
return newObj;
}
var flattened = JSON.stringify(flatten(test));
console.log(flattened);