Есть ли какой-либо метод массива, как установить в Python? - PullRequest
7 голосов
/ 21 декабря 2011

Как я знаю в 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,

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Javascript не имеет понятия наборов.Однако вы можете использовать побочный эффект того факта, что объекты не могут иметь повторяющиеся имена свойств, чтобы копировать функциональность набора, как показано в этой статье блога на тему .

Изстатья:

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 голос
/ 21 декабря 2011

Нет, нет. 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;
}
0 голосов
/ 24 июня 2013

Firefox 13+ предоставляет экспериментальную реализацию наборов. ссылка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...