我有一系列统一对象:
In [216]: (x, n) = sympy.symbols("x n")
In [217]: f = sympy.Sum(x, (n, 0, 10))
In [218]: f.free_symbols
Out[218]: {x}
In [219]: f.variables
Out[219]: [n]
我正在使用每个对象的var objects = [{
id: 1,
name: "one"
}, {
id: 2,
name: "two"
}];
属性作为Map键将它们转换为Map:
id
但是,我想在没有的情况下进行转换:
var map = new Map();
objects.forEach(obj => map.set(obj.id, obj));
此外,我觉得我不应该为这个可能的原生功能制作实用功能。
注意:搜索查询 js数组以映射,或 js将数组转换为地图,或 js map from array < / em>使用
set
的石器时代答案或具有效用函数的解决方案都变得臃肿。我在这里寻找 原生方法。
即。我正在寻找相当于将数组映射到C#中的字典的原生JavaScript,例如。
Object
这非常简单方便,但有趣的是,JavaScript中没有var map = list.ToDictionary(item => item.id);
(即使有Map.from
)。
答案 0 :(得分:3)
我在写这个问题时做了我的研究,我觉得我应该把解决方案留在这里,因为它可能的实际应用很多。
我正在寻找与C#
中的数组映射相对应的原生JavaScript
考虑Map
constructed可以是iterable个2元素数组,其中每个内部数组的第一个元素用作键,第二个元素用于作为一个值,我相信这是本机的JS等价物,也是最短的:
new Map(objects.map(obj => [obj.id, obj]));