将javascript对象转换为html表单兼容查询
我有一个如下形式的javascript对象:将javascript对象转换为html表单兼容查询,javascript,forms,node.js,Javascript,Forms,Node.js,我有一个如下形式的javascript对象: var order = { "id": 13, "name": "Sebastian", "items": [ { "id": 5 } ] ... } 我需要把它做成这样的格式: order[id] = 13 order[name] = "Sebastian" order[items][0][id] = 5 在Javascript中实现这一点的最佳方法是什么?是否有任何预构建的功能 我正在使用下划线
var order = {
"id": 13,
"name": "Sebastian",
"items": [
{
"id": 5
}
]
...
}
我需要把它做成这样的格式:
order[id] = 13
order[name] = "Sebastian"
order[items][0][id] = 5
在Javascript中实现这一点的最佳方法是什么?是否有任何预构建的功能
我正在使用下划线和jquery的nodeJS。可能有一个现成的函数,但这个(快速生成的)函数也应该可以工作:
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
// }
这个怎么样-明白了。。。哪里您已经可以使用
order['name']
和order['items'][0]['id']
访问这些属性(请注意“”)。正如@alessioalex上面所说,您可以通过简单地执行order['id']
和order['name']
等操作,以那种方式访问order
。您不需要做任何额外的工作就可以获得这种“格式”.@Alessio我想把这个对象变成实际的字符串。我需要这个用于npm模块restler,它以这种方式发送参数: