正如我在python中所知,我可以将列表设置为一个唯一的列表,如:
In [12]: a=range(12)
In [13]: a.append(5)
In [14]: a.append(4)
In [15]: a.append(5)
In [16]: a
Out[16]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 5, 4, 5]
In [17]: set(a)
Out[17]: set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
对某些场景非常有用, 我只是想知道如何在javascript,
答案 0 :(得分:3)
Javascript没有集合的概念。但是,您可以使用副作用,即对象不能具有重复的属性名称来复制集合的功能,如this blog article about the topic所示。
来自文章:
var your_array = ['a', 'a', 'a', 'b', 'b'],
set = {};
for (var i = 0; i < your_array.length; i++)
set[your_array[i]] = true;
list = [];
for (var item in set)
list.push(item);
2017年编辑:这已不再适用,JS获得了支持!
empty_set = new Set()
three_element_set = new Set([1, 1, 1, 2, 2, 3])
three_element_set.add(3) // still three element set
答案 1 :(得分:1)
不,没有。 JS非常基础,您必须自己动手或者找到其他人已经完成它的库。
执行此操作的标准方法通常是将元素插入哈希,然后收集密钥 - 因为密钥保证是唯一的。或者,类似地,但保留顺序:
function uniq(arr) {
var seen = {}, result = [];
var len = arr.len;
for (var i = 0; i < len; i++) {
var el = arr[i];
if (!seen[el]) {
seen[el] = true;
result.push(el);
}
}
return result;
}
答案 2 :(得分:0)
Firefox 13+提供了集合的实验性实现。 link
答案 3 :(得分:0)
晚会很晚,但是从ECMAScript 2015开始,experimental implementation中提到的“ mquandalle's answer”已不再是实验性的,而是标准的一部分。 Browser compatibility
答案 4 :(得分:0)
使用Set()构造函数创建Set对象。 Set()构造函数的参数不必是数组:允许任何可迭代对象(包括其他Set对象)。
let myArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 5, 4, 5]
let mySet = new Set(myArray); //output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
另一个例子:
let unique = new Set("Mississippi"); //output: [ "M", "i", "s", "p" ]
参考JavaScript_权威指南David Flanagan-(2020年)