那里可能有一个现成的功能,但是这个(快速制作的)功能也应该可以工作:
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
// }