在javascript中返回特定键的值?

时间:2015-11-24 17:24:17

标签: javascript jquery

我有一个对象,数字作为键,图像路径作为值。我从选定的单选按钮组合中获取数字。例如1111或2111,如果每组中的第一个单选按钮全部被选中,或者第二个无线电按钮全部首先被选中。我想在对象中搜索1111的键,然后如果它存在,则返回其值,这将是一个图像路径。我可以成功找到对象是否有匹配的键,但是如何仅返回该键的值?在1111的情况下,我需要返回" my / image / path1"。以下是我到目前为止的情况:

    var array = [];
var imgs = {
    1111: "my/image/path1",
    2111: "my/image/path2",
    1211: "my/image/path3",
    1311: "my/image/path4"
}

$(':radio').change(function() {
    $(":radio:checked").each(function(i, e)  {
    array[i] = $(this).val();
    });
        var total = 0;
        $.each(array,function() {
            total += this;
        });
        matchKey = parseInt(total, 10);
         // here is where I'm stuck
        if (imgs contains the key matchKey)) {
            console.log(value for matchKey);
        }

});

4 个答案:

答案 0 :(得分:2)

在您的情况下,您可以使用普通的javascript:

if (typeof imgs[matchKey] !== "undefined") { // Check if the key exists
    var value = imgs[matchKey];
}

答案 1 :(得分:2)

您可以使用方括号表示法

if (imgs[matchKey]) {
    console.log(imgs[matchKey]);
}

注意:这假定您的都不会是假的(例如,0,空白字符串,false等。我认为这很好,因为你说你的价值观总是非空路径。但警告立场。如果你的价值观合法地是假的,请查看@Florian回答。

答案 2 :(得分:0)

您可以使用Object.keys(imgs)来检索仅包含键的数组,然后执行简单测试以查看您要查找的键是否包含在数组中:

if (Object.keys(imgs).indexOf('1111') > -1)

答案 3 :(得分:-1)

您可以使用$.each

迭代数组imgs中的每个元素来获取键值对
var imgs = {
    1111: "my/image/path1",
    2111: "my/image/path2",
    1211: "my/image/path3",
    1311: "my/image/path4"
}


$.each(imgs,function(key,value)
{
    if(key === 1111)
     return value; // This would give you the path "my/image/path1"

});