我想像这样转换一个对象:
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
}]
*/
它保持对象容器
答案 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);