基于“多个值”在JS对象中查找“键”
Finding 'Key' in a JS Object based on 'Multiple Values'
采用以下削减的JS对象(JS Fiddle:http://jsfiddle.net/52a4wq0x/1/) - 我想模拟一个多维关联数组。
var ControlMap = {
tb_RosMon: { row: 1, col: 1 },
tb_RosTue: { row: 1, col: 2 },
tb_RosWed: { row: 1, col: 3 },
tb_RosThu: { row: 1, col: 4 },
tb_RosFri: { row: 1, col: 5 },
tb_RosSat: { row: 1, col: 6 },
tb_RosSun: { row: 1, col: 7 },
tb_AbsMon: { row: 2, col: 1 },
tb_AbsTue: { row: 2, col: 2 },
tb_AbsWed: { row: 2, col: 3 },
tb_AbsThu: { row: 2, col: 4 },
tb_AbsFri: { row: 2, col: 5 },
tb_AbsSat: { row: 2, col: 6 },
tb_AbsSun: { row: 2, col: 7 },
ddl_ReasonMon: { row: 3, col: 1 },
ddl_ReasonTue: { row: 3, col: 2 },
ddl_ReasonWed: { row: 3, col: 3 },
ddl_ReasonThu: { row: 3, col: 4 },
ddl_ReasonFri: { row: 3, col: 5 },
ddl_ReasonSat: { row: 3, col: 6 },
ddl_ReasonSun: { row: 3, col: 7 },
tb_AddMon: { row: 4, col: 1 },
tb_AddTue: { row: 4, col: 2 },
tb_AddWed: { row: 4, col: 3 },
tb_AddThu: { row: 4, col: 4 },
tb_AddFri: { row: 4, col: 5 },
tb_AddSat: { row: 4, col: 6 },
tb_AddSun: { row: 4, col: 7 },
Mon_AddReason: { row: 5, col: 1 },
Tue_AddReason: { row: 5, col: 2 },
Wed_AddReason: { row: 5, col: 3 },
Thu_AddReason: { row: 5, col: 4 },
Fri_AddReason: { row: 5, col: 5 },
Sat_AddReason: { row: 5, col: 6 },
Sun_AddReason: { row: 5, col: 7 }
}
这基本上是输入id(tb_RosMon
,tb_AbsMon
等)及其在HTML中的行和列的映射<table>.
我正在尝试为有问题的输入(向上,向下,向左和向右)添加关键导航。
即如果用户在tb_AbsTue
时按下向下箭头,我获取tb_AbsTue
的位置如下:
var row = ControlMap[SourceID]["row"]; //Returns 2
var col = ControlMap[SourceID]["col"]; //Returns 2
然后,我将行递增 1(当他们按下时)给我一个第 3 行 col 2 的目的地。然后我需要搜索上面的对象以查看第 3 行 col 2 中是否存在输入 (tb_###) 并返回其 ID。
怎么能这样呢?普通的JS或JQuery会很好。
Object.keys
和some
会这样做:
var id;
Object.keys(ControlMap).some(function(key) {
var entry = ControlMap[key];
if (entry.row == desiredRow && entry.col == desiredCol) {
id = key;
return true; // Stops the loop
}
return false;
});
这些都是 ES5 的功能,但它们都可以用于 IE8 和其他旧版浏览器。或者,您可以使用for-in
:
var id;
var key;
var entry;
for (key in ControlMap) {
entry = ControlMap[key];
if (entry.row == desiredRow && entry.col == desiredCol) {
id = key;
break;
}
}
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在对象数组中查找多个值的d3范围
- Javascript:根据对象的嵌套数组中的值,在数组中查找对象的索引
- 如何从数组中查找唯一对象
- 使用lodash查找具有truthy值的JS对象的属性
- 正在数组中查找对象
- 在prototypejs中查找对象的类
- Undercore:查找数组中出现频率最高的对象
- 通过知道对象的id在JSON中查找对象
- 查找关键字并创建新对象
- Javascript在JSON中查找对象(我使用Angular)
- 查找对象数组是否包含其中一个标记的最快方法
- 查找数组's按属性不存在于另一个数组中的对象
- JSON.parse 返回 [对象对象] 查找访问对象的属性
- 角度指令与对象查找的双向绑定
- 将数组转换为快速对象查找
- jQuery对象查找只在一个子对象上失败
- Javascript嵌套对象查找,从字符串,没有eval
- RegExp对象查找和替换不起作用
- 如何使用保存的 jQuery 对象查找后代