首页 > 解决方案 > 将对象转换为数组而不将 Object.entries 的键和值放入 JavaScript 中的字符串

问题描述

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

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

*/

它保留对象容器

标签: javascriptarraysobject

解决方案


您可以使用.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);


推荐阅读