Использование строкового значения в качестве свойства объекта для поиска возвращаемого значения свойства - PullRequest
0 голосов
/ 29 января 2012

Я родом из мира Ruby.Как использовать строковое значение массива в качестве свойства объекта?Пример ..

obj.myarray[0] = 1.00 // obviously this does not work, can you pro make it work?

obj = {
 val1: 1.00, val2: 2.00}

myarray = ["val1"]

1 Ответ

4 голосов
/ 29 января 2012

Краткий ответ: Я считаю, что синтаксис, который вы ищете, таков:

obj[myarray[0]] = 1.00;

Предполагается, что у вас есть массив myarray, а первый элемент в массиве (индекс 0) имеет имя ключа, который вы хотите использовать с вашим obj объектом.

Обратите внимание, что = 1.00 является присваиванием , поэтому оно сохранит это значение в вашем объекте. Для сравнения вам понадобятся операторы == или === .

Длинный ответ:

Код из вашего вопроса:

obj = {
   val1: 1.00, val2: 2.00}

создает объект с именем obj с двумя свойствами с именами val1 и val2. Эти свойства могут быть доступны следующим образом:

obj["val1"]
// OR
obj.val1

Где точечный синтаксис работает только с именами свойств, которые соответствуют правилам для имен идентификаторов JavaScript. С помощью синтаксиса скобок и строк вы можете использовать практически любую строку в качестве имени свойства.

Тогда

myarray = ["val1"]

Создает массив с одним элементом, строкой "val1". Как и в моем «коротком ответе», для доступа к свойству объекта с помощью элемента из массива вы говорите:

obj[ myarray[0] ]

(где индекс 0 может быть другой переменной, если необходимо.)

Возможно, вы захотите прочитать это: https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects (Также обратите внимание, что в массивах JavaScript это особый тип объекта, предназначенный для использования с числовыми индексами, который на самом деле не соответствует непосредственно «ассоциативным массивам» другие языки - «простой» объект JS ближе к «ассоциативному массиву».)

Обратите внимание, что значения, которые вы сохраняете, 1.00 и 2.00, будучи числовыми, будут возвращаться как просто 1 и 2 - если вам нужно сохранить конечные нули после десятичной запятой, вы нужно хранить их как строки.

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