Javascript поддерживает наборы? - PullRequest
8 голосов
/ 27 декабря 2010

Поддерживает ли Javascript наборы (список только с уникальными объектами)?

Я нашел эту ссылку , но, как я помню, в JS поддерживается не каждый браузер.

Ответы [ 4 ]

6 голосов
/ 27 декабря 2010

Твои ключи струны?

Каждый объект JavaScript является картой, что означает, что он может представлять набор.

Как показано на странице, которую вы упомянули, каждый объект будет принимать только одну копию каждого ключа (имени атрибута). Значение ключа / атрибута не имеет значения.

4 голосов
/ 27 декабря 2010

jshashtable позволит вам сохранить любой объект в качестве ключа и использовать тот же шаблон, что и в указанной вами ссылке.Кроме того, он предоставляет метод для получения массива ключей, который затем можно перебрать.Он также имеет хорошую поддержку кросс-браузеров, поэтому должен хорошо вписаться в любую среду.

2 голосов
/ 18 октября 2016

Теперь с ES6 (и полифилы / прокладки, такие как corejs ) у вас есть:

Набор - JavaScript | MDN

Пример:

var mySet = new Set([1, 2, 3, 2, 1]);  // => [1, 2, 3]
console.log(mySet.size);
console.log(mySet.has(3));
mySet.forEach(function(x){console.log(x)});

Polifill необходим, так как он не поддерживается старыми браузерами, поэтому вы можете игнорировать его, если нацеливаетесь только на самые последние.

0 голосов
/ 27 декабря 2010

Вы, вероятно, помните Array.forEach(), который действительно не поддерживается более старой версией Opera и всеми браузерами IE - for (var x in ...), насколько мне известно, является частью "родного" JS и поддерживается всеми браузерами.

...