MSDN引用了JavaScript的Set集合抽象。我有一个要转换为集合的对象数组,以便能够.delete()
按名称删除()各种元素:
var array = [
{name: "malcom", dogType: "four-legged"},
{name: "peabody", dogType: "three-legged"},
{name: "pablo", dogType: "two-legged"}
];
如何将此数组转换为集合?更具体地说,是否可以在不迭代上述数组的情况下执行此操作?相对缺少文档(对于实例化集足够;对于转换,则足够)(如果可能的话)。
我可能还在考虑转换为Map,以通过密钥将其删除。我想要完成的是一个可迭代的集合,可以通过主要通过键(而不是索引)来访问元素来访问或修改该集合。
从数组到另一个的转换是最终目标。
只需将数组传递给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));
如果您开始使用:
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));
什么利维 说,关于它传递到构造是正确的,但你也可以使用一个对象。
我认为Veverke想要说的是,您可以轻松地在对象上使用delete
关键字来达到相同的效果。
我认为您对术语感到困惑;属性是对象的组成部分,您可以将其用作命名索引(如果要这样考虑的话)。
尝试这样的事情:
var obj = {
"bob": "dole",
"mr.": "peabody",
"darkwing": "duck"
};
然后,您可以这样做:
delete obj["bob"];
对象的结构将是这样的:
{
"mr.": "peabody",
"darkwing": "duck"
}
具有相同的效果。
按照定义,“集合是值的集合,其中每个值只能出现一次。” 因此,如果数组具有重复值,则重复值中只有一个值将被添加到Set中。
var arr = [1, 2, 3];
var set = new Set(arr);
console.log(set); // {1,2,3}
var arr = [1, 2, 1];
var set = new Set(arr);
console.log(set); // {1,2}
因此,如果数组中有重复的值,请不要转换为set。
本文地址:http://javascript.askforanswer.com/yaoshezhidejavascriptshuzu.html
文章标签:arrays , javascript , set
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:arrays , javascript , set
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!