将javascript对象转换为符合html格式的查询

时间:2012-06-15 11:37:53

标签: 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中执行此操作的最佳方法是什么?是否有任何预先构建的功能?

我在nodeJS上使用下划线和jquery。

1 个答案:

答案 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
// }