将javascript数组转换为具有相同键/值的对象

新手上路,请多包涵

我有一个返回数组的函数,如下所示:

在此处输入图像描述

但我正在尝试填充 SweetAlert2 对话框。

正如文档所例示 的那样,所需的输入看起来像这样

inputOptions: {
    'SRB': 'Serbia',
    'UKR': 'Ukraine',
    'HRV': 'Croatia'
  },

考虑到键与值相同,我如何将我的数组转换为所需的格式?

所以,结果是这样的:

 {
    'aaa123': 'aaa123',
    'Açucena': 'Açucena',
    'Braúnas': 'Braúnas',
    [...]
}

我试过 JSON.stringify ,但输出不是我需要的:

“[[“aaa123”,“Açucena”,“Braúnas”,“C. Fabriciano”,“gege”,“gegeq2”,“Ipatinga”,“Joanésia”,“Mesquita”,“Rodoviário”,“teste”,“teste2”,“Timóteo”,“Tomatoentro”,“ts”]]“

原文由 Phiter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 408
2 个回答

这可以通过一个简单的 reduce 调用来完成:

 // Demo data
var source = ['someValue1', 'someValue2', 'someValue3', 'other4', 'other5'];

// This is the "conversion" part
var obj = source.reduce(function(o, val) { o[val] = val; return o; }, {});

// Demo output
document.write(JSON.stringify(obj));

原文由 Amit 发布,翻译遵循 CC BY-SA 3.0 许可协议

Object.assign(
  {},
  ...['value1', 'value2', 'value3', 'value4', 'value5'].map((value) => ({
    [value]: value,
  })),
)

回报

{value1: "value1", value2: "value2", value3: "value3", value4: "value4", value5: "value5"}

没有常见的 ESlint 规则错误。

原文由 onlyurei 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题