要设置的 JavaScript 数组

新手上路,请多包涵

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

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

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

我可能还在考虑转换为 Map ,以便通过键删除。我想要完成的是一个可迭代的集合,可以通过主要通过键(而不是索引)访问元素来访问或修改它。

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

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

阅读 371
2 个回答

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

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

看这里

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

如果你开始:

 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));

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

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