Переменные JavaScript-назначения из кортежей - PullRequest
80 голосов
/ 22 декабря 2010

В других языках, таких как Python 2 и Python 3, вы можете определять и присваивать значения переменной кортежа, а также получать их значения следующим образом:

tuple = ("Bob", 24)
name, age = tuple
print(name)           #name evaluates to Bob
print(age)            #age evaluates to 24

Есть ли что-нибудь подобное в JavaScript?Или мне просто нужно сделать это ужасным способом с массивом:

tuple = ["Bob", 24]
name = tuple[0]       //name Evaluates to Bob
age = tuple[1]        //age Evaluates to 24

Есть ли лучший способ симулировать кортежи Python в JavaScript 5?

Ответы [ 12 ]

1 голос
/ 26 сентября 2014

Вот простая реализация Javascript Tuple:

var Tuple = (function () {
   function Tuple(Item1, Item2) {
      var item1 = Item1;
      var item2 = Item2;
      Object.defineProperty(this, "Item1", {
          get: function() { return item1  }
      });
      Object.defineProperty(this, "Item2", {
          get: function() { return item2  }
      });
   }
   return Tuple;
})();

var tuple = new Tuple("Bob", 25); // Instantiation of a new Tuple
var name = tuple.Item1; // Assignment. name will be "Bob"
tuple.Item1 = "Kirk"; // Will not set it. It's immutable.

Это 2-кортеж, однако вы можете изменить мой пример для поддержки 3,4,5,6 и т. Д. Кортежей.

0 голосов
/ 11 ноября 2017
[a, b, c] = [2, 'momo', 7]  // b === 'momo', c ===7 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...