将对象转换为数组而不将 Object.entries 的键和值放入字符串中

时间:2021-02-07 09:11:41

标签: javascript arrays object

我想像这样转换一个对象:

let obj = {
arabicLang: false,
cancelVisitEmailAlert: false,
canselVisitSmsAlert: false
}

像这样的键值对数组:

[
"arabicLang": false,
"cancelVisitEmailAlert": false,
"canselVisitSmsAlert": false
]

我阅读了 StackOverflow 中的所有问题,但没有一个是我的情况

我尝试了这个,但它返回字符串中的键和值:

    let data = [];
     for (const [key, value] of Object.entries(obj)) {
       data.push(createData(key, value));
     }

function createData(key, value) {
    return key + ":" + value;
  }

也试试这个:

    let arr = Array.of(obj)
      console.log(arr) 
      /* output is 
      [{
    arabicLang: false,
    cancelVisitEmailAlert: false,
    canselVisitSmsAlert: false
    }]

*/

它保持对象容器

2 个答案:

答案 0 :(得分:1)

您可以像这样使用 .reduce.map

let obj = {
    arabicLang: false,
    cancelVisitEmailAlert: false,
    canselVisitSmsAlert: false
};

// Using .reduce
const result = Object.entries(obj).reduce((acc, [key, value]) => {
  acc[key] ??= {[key]: value};
  return acc;
}, {});
console.log(Object.values(result));

// Using .map
const result2 = Object.entries(obj).map(([key, value]) => ({[key]: value}));
console.log(result2);

答案 1 :(得分:0)

唯一的东西而不是 createData 方法,只是使用对象字面量来简化。

let obj = {
  arabicLang: false,
  cancelVisitEmailAlert: false,
  canselVisitSmsAlert: false,
};

let data = [];
for (const [key, value] of Object.entries(obj)) {
  data.push({ [key]: value });
}

console.log(data);