我有一个这种形式的javascript对象:
var order = {
"id": 13,
"name": "Sebastian",
"items": [
{
"id": 5
}
]
...
}
我需要以这样的格式得到它:
order[id] = 13
order[name] = "Sebastian"
order[items][0][id] = 5
在Javascript中执行此操作的最佳方法是什么?是否有任何预先构建的功能?
我在nodeJS上使用下划线和jquery。
答案 0 :(得分:0)
可能有一个现成的功能,但这个(快速制作的)功能也应该起作用:
function convert(key, obj) {
var collector = {};
function recurse(key, obj) {
var property, name;
if( typeof obj === "object" ) {
for( property in obj ) {
if( obj.hasOwnProperty(property) ) {
name = key + "[" + property + "]";
recurse(name, obj[property]);
}
}
} else {
collector[key] = String(obj);
}
}
recurse(key, obj);
return collector;
}
给它一个起始键和对象,然后你会得到一个带有全名和值的“扁平”对象:
var order = {
"id": 13,
"name": "Sebastian",
"items": [
{
"id": 5
}
]
};
var flattened = convert("order", order);
// `flattened` is now:
// {
// 'order[id]': 13,
// 'order[name]': 'Sebastian',
// 'order[items][0][id]': 5
// }