我有一个对象,数字作为键,图像路径作为值。我从选定的单选按钮组合中获取数字。例如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);
}
});
答案 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
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"
});