首页 > 解决方案 > 如何在javascript中将数组元素转换为条件为真和一个字符串值的对象

问题描述

什么是更紧凑的转换color=["red", "green", "blue", "Other"]方式colorObjFinal = { blue: true, green: true, Other: "Other", red: true }

这是我的长功能,我想缩短它:

let color = ["red", "green", "blue", "Other"];
let colorObj;
let colorObjFinal = {};
console.log("color:", color);

colorObj = color.reduce((a, v) => ({
...a,
[v]: v
}), {});
console.log("colorObj:", colorObj)

for (var key in colorObj) {
    if (colorObj.hasOwnProperty(key)) {
        if(key == 'Other'){
        colorObjFinal[key] = colorObj[key];
      } else {
        colorObjFinal[key] = true;
      }
    }
}

console.log("colorObjFinal:", colorObjFinal)

标签: javascriptjqueryfrontend

解决方案


您可以更改您的第一个Array.reduce以获得结果。

let color = ["red", "green", "blue", "Other"];

const result = color.reduce((acc, item) => {
   acc[item] = (item != "Other") ? true : item;
   return acc;
}, {});

console.log(result);


推荐阅读