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

问题描述 投票:1回答:5

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

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中用来完成这个的代码吗?

javascript typescript
5个回答
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等)。


0
投票

这是解决方案。

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

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

另一种方法是

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


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

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 ..
}

0
投票

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


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

0
投票

您可以执行此Object键方法。创建一个自定义函数并将其添加到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']);
}
© www.soinside.com 2019 - 2024. All rights reserved.