JavaScript.Ключ словаря не является строкой? - PullRequest
0 голосов
/ 09 июня 2018

Просто простой вопрос.Имея следующий фрагмент кода:

  function addMarker(data) {
    var types = {'meet': 380 + ',' + 95, 'vegetable': 285 + ',' + 0};
    var selection = data.type;

    console.log(types["meet"]);
    console.log(types[selection]);
    console.log(selection);

и получая в консоли следующие результаты:

380,95
undefined
Meet

Во втором случае мне также понадобится 380,95.selection должна быть строкой, исходящей от объекта data.Каким-то образом при использовании этой строки в качестве словарного ключа это не работает.Как я мог тогда получить разные значения из types таким динамическим образом, как это?

Просто чтобы уточнить, я не пытаюсь получить числа с плавающей запятой, мне нужны два числа, разделенные ,

Ответы [ 3 ]

0 голосов
/ 09 июня 2018

Пожалуйста, проверьте, если

data.type === "Meet" // true

Это должно быть "встретить".

Кстати.это написано мясо, а не встретить.

0 голосов
/ 09 июня 2018

Просто чтобы прояснить ситуацию

addMarker({'type':'meet'}) // would produce correct result 
addMarker({'type':'Meet'}) // would produce result  result you see 

Чтобы исправить это, вы можете использовать строчные буквы нижнего регистра, предоставленные Nikhil

 function addMarker(data) {
        var types = {'meet': 380 + ',' + 95, 'vegetable': 285 + ',' + 0};
        var selection = data.type;
       selection = selection.toLowerCase();

        console.log(types["meet"]);
        console.log(types[selection]);
        console.log(selection);
}

Или просто сделать правильный вызов

0 голосов
/ 09 июня 2018

Javascript чувствителен к регистру .Объект имеет свойство meet, тогда как значение Выбор равен Meet.Следовательно, вам нужно будет обновить ваш код до

console.log(types[selection.toLowerCase()]);

. Для справки: String.toLowerCase ()

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