要设置的 JavaScript 数组

2022-08-30 00:42:33

MSDN 引用了 JavaScript 的 Set 集合抽象。我有一个对象数组,我想将它们转换为一个集合,以便我能够通过名称删除()各种元素:.delete()

var array = [
    {name: "malcom", dogType: "four-legged"},
    {name: "peabody", dogType: "three-legged"},
    {name: "pablo", dogType: "two-legged"}
];

如何将此数组转换为集?更具体地说,是否可以在不迭代上述数组的情况下执行此操作?文档相对缺乏(对于实例化集来说足够了;对于转换来说不是 - 如果可能的话)。

我可能也在考虑转换为地图,以便按键删除。我试图实现的是一个可迭代的集合,可以通过主要通过键(而不是索引)访问元素来访问或修改它。

从数组到另一个数组的转换是最终目标。


答案 1

只需将数组传递给 Set 构造函数即可。Set 构造函数接受参数。Array 对象实现协议,因此它是一个有效的参数。iterableiterable

var arr = [55, 44, 65];
var set = new Set(arr);
console.log(set.size === arr.length);
console.log(set.has(65));

请参阅此处


答案 2

如果您从以下方面开始:

let array = [
    {name: "malcom", dogType: "four-legged"},
    {name: "peabody", dogType: "three-legged"},
    {name: "pablo", dogType: "two-legged"}
];

你想要一组,比如说,名字,你会做的:

let namesSet = new Set(array.map(item => item.name));