0

我有一个这种形式的 javascript 对象:

var order = {
  "id": 13,
  "name": "Sebastian",
  "items": [
    {
      "id": 5
    }
  ]
  ...
}

我需要以如下所示的格式获取它:

order[id] = 13
order[name] = "Sebastian"
order[items][0][id] = 5

在 Javascript 中执行此操作的最佳方法是什么?有没有为此预先构建的功能?

我在带有下划线和 jquery 的 nodeJS 上。

4

1 回答 1

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
// }
于 2012-06-15T14:58:50.157 回答