如何将js对象拆分为键值对数组?

时间:2017-12-20 04:22:32

标签: javascript typescript

假设我有一个这样的对象:

var myObject = {
   X:1,
   Y:2,
   Z:3
}

假设我想创建一个for循环来处理对象上的每个属性。下面的代码只是为了传达我想要做的事情的一些伪代码:

var properties = myObject.split();
for(var i = 0; i < properties.length; i++)
{
   var x = properties[i][key];
   var y = properties[i][value]
}

你能推荐一些我可以在Javascript / TypeScript中用来完成这个的代码吗?

5 个答案:

答案 0 :(得分:1)

您可以使用Object.entries函数将所有键和值对作为数组数组:

Object.entries(myObject);

哪会回来:

[['X', 1], ['Y', 2], ['Z' 3]]

你可以遍历它们:

for(const [key, value] of Object.entries(myObject)) {
  console.log(key, value);
}

哪会注销:

X 1
Y 2
Z 3

请注意,这是一个相对较新的功能,不支持IE或Opera。您可以使用MDN中的polyfill或使用任何其他方法(for…inhasOwnPropertyObject.keys等。)。

答案 1 :(得分:0)

这是解决方案。

&#13;
&#13;
var arr = {
    X:1,
    Y:2,
    Z:3
};

for (var key in arr) {
    if (arr.hasOwnProperty(key)) {
        console.log(key + " -> " + arr[key]);
    }
}
&#13;
&#13;
&#13;

你可以做的另一种方法是

&#13;
&#13;
var arr = {
        X:1,
        Y:2,
        Z:3
    };


Object.keys(arr).forEach(key => { console.log(key, arr[key]) })
&#13;
&#13;
&#13;

答案 2 :(得分:0)

最佳做法通常是使用Object.keys()

var keys = Object.keys(myObject);
for(var i = 0; i < keys; i++) {
  var key, value;
  key = Object.keys[i];
  value = myObject[key];

  // .. do something else ..
}

答案 3 :(得分:0)

&#13;
&#13;
var arr = {
        X:1,
        Y:2,
        Z:3
    };


Object.keys(arr).map(key => { console.log(key, arr[key]) })
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您可以执行此对象键方法。创建自定义函数并将其添加到Object的原型中,如

var myObject = {
  X: 1,
  Y: 2,
  Z: 3
}

Object.prototype.mySplit = function() {
  return Object.keys(this).map((key) => {
    return {
      key: key,
      value: this[key]
    };
  });
}

var properties = myObject.mySplit();
for (var i = 0; i < properties.length; i++) {
  console.log(properties[i]['key'], properties[i]['value']);
}