将集合转换为对象

kno*_*t22 7 javascript

我有一个集合,需要转换为一个对象,其中该集合的唯一值作为对象键,一个空字符串作为对象中每个元素的值。

这是我正在使用的集合:

const uom = new Set(['inches', 'centimeters', 'yards', 'meters']);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

const uomObj = {...[...uom]};
console.log(uomObj);
Run Code Online (Sandbox Code Playgroud)

这会产生这样的结果:

Object {
  "0": "inches",
  "1": "centimeters",
  "2": "yards",
  "3": "meters",
}
Run Code Online (Sandbox Code Playgroud)

但这与期望的结果不符:

Object {
  "inches": "",
  "centimeters": "",
  "yards": "",
  "meters": "",
}
Run Code Online (Sandbox Code Playgroud)

这可以通过 ES6 方法实现吗?如果是这样,怎么办?

Nic*_*ons 7

您可以使用Array.from映射函数将集合内的每个值转换为对象,然后使用Object.assign()扩展语法将对象数组合并为单个结果对象,如下所示:

const uom = new Set(['inches', 'centimeters', 'yards', 'meters']);
const res = Object.assign(...Array.from(uom, v => ({[v]:''})));
console.log(res);
Run Code Online (Sandbox Code Playgroud)