将对象转换为对象数组

时间:2019-03-29 07:48:42

标签: javascript

我调用的API给出如下结果:

{
  "name1" : "value1",
  "name2" : "value2",
  "name3" : "value3",
  "name4" : "value4",
}

我想更改将其转换为

[
  {"name1" : "value1"},
  {"name2" : "value2"},
  {"name3" : "value3"},
  {"name4" : "value4"},
[

我尝试使用

Object.keys(result).forEach(function(key) {
      console.log(key, result[key]);
      let item = key;
      policyStatusList.push(
          new Object({
          item: result[key]
          })
     );
});

但最终还是

[
  {"item" : "value1"},
  {"item" : "value2"},
  {"item" : "value3"},
  {"item" : "value4"},
[

有什么建议吗?

5 个答案:

答案 0 :(得分:7)

.map对象的Object.entries

const obj = { "name1" : "value1", "name2" : "value2", "name3" : "value3", "name4" : "value4" };
const arrOfObjs = Object.entries(obj).map(([key, val]) => ({ [key]: val }));
console.log(arrOfObjs);

答案 1 :(得分:2)

您可以使用reduceconcat方法。

var obj = { "name1" : "value1", "name2" : "value2", "name3" : "value3", "name4" : "value4" }
var res = Object.keys(obj).reduce((result, item) => result.concat([{[item] : obj[item]}]), []);
console.log(res);

答案 2 :(得分:1)

  

我想更改将其转换为...

不,您可能不需要。 API返回的数据结构很棒,因为

1)您可以轻松获取某个键的值,例如obj.name1

2)您可以轻松地获取所有键(Object.keys(obj)),值(Object.values(obj))和键值对(Object.entries(obj))进行迭代。

凭借“想要”获得的数据结构,您将无法:

1)查找一个值,因为您必须迭代数组并在每个对象中搜索键,这确实很慢而且很丑。

2)遍历键,值和键-值对,因为您必须从每个对象中提取键和值,这很复杂。

所以不,你不想那样。

答案 3 :(得分:0)

尝试:

const obj = {
  "name1" : "value1", 
  "name2" : "value2", 
  "name3" : "value3", 
  "name4" : "value4" 
};
const convertedArray = Object.entries(obj).map(([key, val]) => ({
    [key]: val 
}));
console.log(convertedArray);

答案 4 :(得分:0)

您的问题是您正在使用键item创建新对象-您想使用键[item](名为item的变量的值,而不是文字字符串) item):

const result = {
  "name1" : "value1", 
  "name2" : "value2", 
  "name3" : "value3", 
  "name4" : "value4" 
};

let policyStatusList = [];

Object.keys(result).forEach(function(key) {
  let item = key;
  policyStatusList.push(
    new Object({
      [key]: result[key]
    })
  );
});

console.log(policyStatusList);

相关问题