这是我到目前为止构建的:https://plnkr.co/edit/fnhKUhuTYjUTQgJLnZoT?p=preview
我想在input
文本框中显示一个值,该值取决于2个下拉菜单中用户的2个选项。我希望这个值来自values
数组:
var values = [1, 2, 0.1, 1, 3, .2, 2, 3,.3];
如果第一个选项是1
且第二个选项是2
,那么我希望input
文本框显示0.1
。反之亦然,所以如果第一个选项是2
而第二个选项是1
,那么我希望0.1
成为输出。
如果用户为两个菜单选择相同的值,我不希望发生任何事情。因此,如果用户为两个菜单选择2
,那么我希望没有输出
我该如何编程?
编辑:我应该首先将values
数组转换为这样的哈希映射:
var values = [(1, 2): 0.1, (1, 3): .2, (2, 3): .3];
答案 0 :(得分:1)
我希望你不要在我的解决方案中使用jQuery,因为你已将它包含在你的Plunk中。
var $selects = $('select');
var $output = $('#pred');
首先,我将创建一个输入对的地图来输出值。
var values = {
'1,2': 0.1,
'1,3': 0.2,
'2,3': 0.3
};
接下来,我将在选择菜单上收听change
事件。在我的change
处理程序中,我将选择的值映射到数字数组中。接下来,通过对这个数组进行排序和连接,我应该以升序排列一对数字,并用逗号分隔;一个key
,就像我的values
对象中的键一样。
最后,我会在结果$output
处将values
的值设置为key
的值。如果values[key]
为undefined
,我将默认为空字符串。
$selects.on('change', function () {
var key = $selects.map(function (index, el) {
return Number($(el).val());
})
.get()
.sort()
.join(',');
$output.val(values[key] || '');
});