如何从IE浏览器的迭代变量创建`Object`键?

时间:2017-05-22 09:22:15

标签: javascript internet-explorer

我正在尝试循环json并创建新的数组。它适用于除ie浏览器以外的其他浏览器。如何解决ie

的问题

她是我的代码:

var json = [{
    "name": "techM",
    "age": 12,
    "station": "chennai"
  },
  {
    "name": "CTS",
    "age": 10,
    "station": "Pondy"
  }
];

var columns = [];

json.forEach(function(object) {

  var that = this;

  Object.keys(object).forEach(function(key) {
    //[key] is not understand by ie browsers.
    if (!that[key]) that[key] = {
      [key]: []
    }, columns.push(that[key]);
    that[key][key].push(object[key])

  })
  console.log(that);
}, {})

Live Demo

2 个答案:

答案 0 :(得分:0)

您的代码在IE中不起作用的原因是计算对象属性:

that[key] = {[key]: []}

this page底部描述的IE中不支持此功能。

您可以将其更改为

var obj = {};
obj[key] = [];
if(!that[key]) that[key] = obj, columns.push(that[key]);
that[key][key].push(object[key])

更新了实例:https://jsfiddle.net/rvtw7jqp/1/

答案 1 :(得分:-1)

你可以使用这样的东西。

if (!Object.keys) {
  Object.keys = function(obj) {
    var keys = [];

    for (var i in obj) {
      if (obj.hasOwnProperty(i)) {
        keys.push(i);
      }
    }

    return keys;
  };
}