2011-12-21 1 views
3

Comme je sais en python je peux définir une liste à une liste unique comme:Y a-t-il une méthode de type tableau tel que défini dans 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]) 

il est très utile pour une scène, je veux juste savoir comment cela en javascript,

+0

Je recommande très fortement que vous effectuez une recherche Google avant de poser des questions ici. Je l'ai googlé et trouvé qu'il n'y a pas de 'Set' natif en Javascript. Il sera simple d'implémenter votre propre structure de données Set. –

+0

La question était au sommet de google quand j'ai cherché. –

Répondre

1

Non , il n'y en a pas. JS est assez basique, vous devez le faire vous-même ou trouver une bibliothèque où quelqu'un d'autre l'a déjà fait.

La méthode standard consiste généralement à insérer des éléments dans un hachage, puis à collecter les clés, car les clés sont garanties uniques. Ou, de manière similaire, mais en conservant l'ordre:

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; 
} 
1

Javascript n'a pas la notion d'ensembles. Toutefois, vous pouvez utiliser un effet secondaire du fait que les objets ne peuvent pas avoir de noms de propriété dupliqués pour répliquer la fonctionnalité d'un ensemble, comme vu sur this blog article about the topic.

de l'article:

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

EDIT en 2017: Ce n'est plus vrai, JS a obtenu le soutien mis!

empty_set = new Set() 
three_element_set = new Set([1, 1, 1, 2, 2, 3]) 
three_element_set.add(3) // still three element set 
0

Firefox 13+ fournit une implémentation expérimentale des ensembles. link.

Questions connexes