Как показать значение из объекта путем сопоставления ввода пользователя с его ключом? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу сделать инструмент преобразования, который преобразует один код (пользовательский ввод) в другой (предопределенный).Я решил использовать объект Javascript в качестве контейнера для кодов, и моя функция будет принимать пользовательский ввод, который фактически является ключом от объекта javascript, сопоставлять его с ключом в контейнере кода, и если совпадение будет найдено, функция отобразит значение дляокно предупреждения.

Я сделал один код, но он не работает.Я пытался найти решение, но сейчас мне не удалось.

Вот мой код:

$(document).ready(function() {
    $("#convert").click(function(){
        var GardinerToUnicodeCodePoint = {
                        "A1"    :"995328",
                        "A1A"   :"995329",
                        "A1B"   :"995330",
                        "A1C"   :"995331",
                        "A2"    :"995332",
                        "A2A"   :"995333",
                        "A3"    :"995334",
                        "A3A"   :"995335",
                        "A3B"   :"995336",
                        "A4"    :"995337",
                        "A4A"   :"995338",
                        "A4B"   :"995339",
                        "A4C"   :"995340",
                        "A4D"   :"995341",
                        "A4E"   :"995342",
                        "A5"    :"995343",
                        "A5A"   :"995344",
                        "A5B"   :"995345",
                        "A5C"   :"995346",
                        "A6"    :"995347",
        };
        var userInput = $("#userInput").val; /*for example 'A1'*/
        if (userInput in GardinerToUnicodeCodePoint) {
            alert(/*value of key 'userInput' -> 995328*/);
        } else {
            alert("No code found!");
        }
    });
});

Ответы [ 3 ]

0 голосов
/ 15 мая 2018
function getReturnCodeUsingKey(keyFromUserInput)
    {
        var GardinerToUnicodeCodePoint = {
            "A1"    :"995328",
            "A1A"   :"995329",
            "A1B"   :"995330",
            "A1C"   :"etc"
        };

        returnVal = GardinerToUnicodeCodePoint[keyFromUserInput];

        return returnVal ? returnVal : "error: no match found";
    } 

Передайте эту функцию вашему string input от пользователя, и он вернет то, что вы хотите, я думаю.

Итак, ваше полное решение будет выглядеть так:

$(document).ready(function() {
    $("#convert").click(function(){
        var userInput = $("#userInput").val(); /*for example 'A1'*/
        // a call to our new function keeping responsibilities seperated
        return getReturnCodeUsingKey(userInput);
    });
});

function getReturnCodeUsingKey(keyFromUserInput)
{
    var GardinerToUnicodeCodePoint = {
                    "A1"    :"995328",
                    "A1A"   :"995329",
                    "A1B"   :"995330",
                    "A1C"   :"995331",
                    "A2"    :"995332",
                    "A2A"   :"995333",
                    "A3"    :"995334",
                    "A3A"   :"995335",
                    "A3B"   :"995336",
                    "A4"    :"995337",
                    "A4A"   :"995338",
                    "A4B"   :"995339",
                    "A4C"   :"995340",
                    "A4D"   :"995341",
                    "A4E"   :"995342",
                    "A5"    :"995343",
                    "A5A"   :"995344",
                    "A5B"   :"995345",
                    "A5C"   :"995346",
                    "A6"    :"995347",
    };

    // set a variable to hold the return of the object query
    returnVal = GardinerToUnicodeCodePoint[keyFromUserInput];

    //return valid value from object, or string if undefined
    return returnVal ? returnVal : "error: no match found";
} 
0 голосов
/ 15 мая 2018

Проблема, описанная в комментариях @ epascarello , заключается в том, что вы должны использовать $("#userInput").val(); с круглыми скобками

Пример кода:

$('#convert').click(function() {
  var GardinerToUnicodeCodePoint = {
    A1: '995328',
    A1A: '995329',
    A1B: '995330',
    A1C: '995331',
    A2: '995332',
    A2A: '995333',
    A3: '995334',
    A3A: '995335',
    A3B: '995336',
    A4: '995337',
    A4A: '995338',
    A4B: '995339',
    A4C: '995340',
    A4D: '995341',
    A4E: '995342',
    A5: '995343',
    A5A: '995344',
    A5B: '995345',
    A5C: '995346',
    A6: '995347'
  };
  var userInput = $('#userInput').val(); 
  var result = userInput in GardinerToUnicodeCodePoint
    ? 'Value of key \'userInput\' -> ' + userInput
    : 'No code found!';

  console.log(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" id="userInput">
<button id="convert">Submit</button>
0 голосов
/ 15 мая 2018

Вы можете использовать [] после вызова объекта для получения пары ключ-значение:

GardinerToUnicodeCodePoint[userInput]

Измените свой код на:

    var userInput = $("#userInput").val; /*for example 'A1'*/
    if (userInput in GardinerToUnicodeCodePoint) {
        alert(GardinerToUnicodeCodePoint[userInput]);
    } else {
        alert("No code found!");
    }

См. Jsfiddle: https://jsfiddle.net/wy70s3gj/

...