使用指定的对象键从对象数组快速创建对象映射

Joh*_*isz 5 javascript ecmascript-6

我有一组统一的对象:

var objects = [{
    id: 1,
    name: "one"
}, {
    id: 2,
    name: "two"
}];
Run Code Online (Sandbox Code Playgroud)

我通过使用id每个对象的属性作为 Map 键将它们转换为 Map:

var map = new Map();

objects.forEach(obj => map.set(obj.id, obj));
Run Code Online (Sandbox Code Playgroud)

但是,我想在没有以下情况下进行转换:

  1. 必须自己手动创建一个新的地图对象,并且
  2. 必须手动遍历数组并调用set自己

此外,我不觉得我应该为这个可能是原生的功能创建一个实用程序函数。

注意:搜索js array to map,或js convert array to map,或js map from array 的搜索查询都被石器时代的答案 withObject或具有实用功能的解决方案所困扰。我找这里原生的做法。

例如,我正在寻找在 C# 中将数组映射到字典的本机 JavaScript 等效项。

var map = list.ToDictionary(item => item.id);
Run Code Online (Sandbox Code Playgroud)

这非常简单和方便,但有趣的是Map.from,JavaScript 中没有(即使有Array.from)。

Joh*_*isz 17

我在写问题的时候做了我的研究,我觉得我应该把解决方案留在这里,因为它可能的实际应用有很多。


我正在寻找在 C# 中将数组映射到字典的本机 JavaScript 等效项

考虑到aMap可以用可迭代的2元素数组构造,其中每个内部数组的第一个元素用作键,第二个元素用作值,我相信这是原生JS等价物,也是最短的:

new Map(objects.map(obj => [obj.id, obj]));
Run Code Online (Sandbox Code Playgroud)

现场演示