javascript - 如何在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)
解决方案
您可以更改您的第一个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);
推荐阅读
- javascript - 使用存储为对象属性的类方法时类实例丢失
- amazon-web-services - AWS:对 ASG 和 ELB 的多可用区设置感到困惑
- android - 移除 Android Studio 创建的 MainActivity
- ios - 在使用集成了 Google 服务的应用程序时,有没有人注意到 UIPasteboard 的奇怪行为?
- python - 我怎样才能有效地打开 30gb 的文件并在不减慢速度的情况下处理其中的一部分?
- xcode - Objective-C 链接器找不到对 Core UIKit 符号的引用
- jhipster - 如何在 jhipster 应用程序中使用 postgresql 数据库设置 default_schema?
- sql - 是否可以将 LIKE 与一组字符串而不是单个元素一起使用?
- html - Bootstrap 4:修复移动设备上 Div 之外的图像
- c++ - 在不同 CPU 上处理整数