JavaScript « Получить значение в ассоциативном массиве javascript
Не получается вывести значение в ассоциативном массиве
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
var massiv = {
'до 23 лет':{'менее 2-х лет':1.7, 'от 2 лет до 4 лет':1.3, 'от 4 лет до 10 лет':1.15, 'от 10 лет и выше':0},
'от 23 лет до 28 лет':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.1, 'от 4 лет до 10 лет':1, 'от 10 лет и выше':0.95},
'от 28 лет до 33 лет':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.97, 'от 10 лет и выше':0.9},
'от 33 лет до 60 лет':{'менее 2-х лет':1.4, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.92,'от 10 лет и выше':0.85},
'от 60 лет и выше':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.92, 'от 10 лет и выше':0.9}
};
Вывод делаю так
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
var a = 'до 23 лет';
var b = 'менее 2-х лет';
console.log(massiv.a.b);
Вылетает ошибка: massiv.a is undefined
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
var massiv = {
'до 23 лет':{'менее 2-х лет':1.7, 'от 2 лет до 4 лет':1.3, 'от 4 лет до 10 лет':1.15, 'от 10 лет и выше':0},
'от 23 лет до 28 лет':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.1, 'от 4 лет до 10 лет':1, 'от 10 лет и выше':0.95},
'от 28 лет до 33 лет':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.97, 'от 10 лет и выше':0.9},
'от 33 лет до 60 лет':{'менее 2-х лет':1.4, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.92,'от 10 лет и выше':0.85},
'от 60 лет и выше':{'менее 2-х лет':1.5, 'от 2 лет до 4 лет':1.0, 'от 4 лет до 10 лет':0.92, 'от 10 лет и выше':0.9}
};
Вывод делаю так
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .javascript.geshi_code {font-family:monospace;} .javascript.geshi_code .imp {font-weight: bold; color: red;} .javascript.geshi_code .kw1 {color: #000066; font-weight: bold;} .javascript.geshi_code .kw2 {color: #003366; font-weight: bold;} .javascript.geshi_code .kw3 {color: #000066;} .javascript.geshi_code .co1 {color: #006600; font-style: italic;} .javascript.geshi_code .co2 {color: #009966; font-style: italic;} .javascript.geshi_code .coMULTI {color: #006600; font-style: italic;} .javascript.geshi_code .es0 {color: #000099; font-weight: bold;} .javascript.geshi_code .br0 {color: #009900;} .javascript.geshi_code .sy0 {color: #339933;} .javascript.geshi_code .st0 {color: #3366CC;} .javascript.geshi_code .nu0 {color: #CC0000;} .javascript.geshi_code .me1 {color: #660066;} .javascript.geshi_code span.xtra { display:block; }
var a = 'до 23 лет';
var b = 'менее 2-х лет';
console.log(massiv.a.b);
Вылетает ошибка: massiv.a is undefined
1 ответов
"Undefined" вы получаете потому, что неправильно работаете с объектом (ассоциативным массивом) в вашем конкретном случае. Я вам объясню почему.
Во-первых, получить доступ к свойствам JavaScript объектов можно двумя путями:
Но при доступе к определённому свойству вашего объекта вы не учли одного важного факта. А именно:
Именами свойств JS объектов могут быть JS строки, или всё, что может быть cконвертировано в строки, включая пустую строку " ". Однако если имя свойства - не валидный JavaScript идентификатор (например имя, содержащее пробелы или тире, или начинается с числа), то получить доступ к такому свойству можно только через квадратные скобки.
Так что если хотите использовать такие строки в качестве имён в вашем объекте, то делайте как подсказал вам webdevfan.
Иначе можно делать так, исходя из моего краткого описания работы с объектами выше:
var obj = {
"приветМосква": 12
};
alert( obj.приветМосква ); // выдаст 12
Во-первых, получить доступ к свойствам JavaScript объектов можно двумя путями:
- Используя нотацию "точка", как сделали вы
- Используя квадратные скобки "[]", как продемонстрировал webdevfan
Но при доступе к определённому свойству вашего объекта вы не учли одного важного факта. А именно:
Именами свойств JS объектов могут быть JS строки, или всё, что может быть cконвертировано в строки, включая пустую строку " ". Однако если имя свойства - не валидный JavaScript идентификатор (например имя, содержащее пробелы или тире, или начинается с числа), то получить доступ к такому свойству можно только через квадратные скобки.
Так что если хотите использовать такие строки в качестве имён в вашем объекте, то делайте как подсказал вам webdevfan.
Иначе можно делать так, исходя из моего краткого описания работы с объектами выше:
var obj = {
"приветМосква": 12
};
alert( obj.приветМосква ); // выдаст 12