为数组中的元素指定条件/类别

时间:2014-03-15 10:03:36

标签: javascript jquery keypress

我有一系列的单词 - 我的刺激 - 它们会出现在屏幕上。然而,每个单词都有另一个“条件”,即它们是,类别A,类别B或类别C.这可能很简单,但我找不到答案而且坚持下去。 我的最终目标是在每次运行脚本时将类别随机分配给刺激。

var stim = [ "AEROPLANE", "TRAIN", "CAR", "BIKE", "WALKING"];

在这里,我希望AIRPLANE有类别,TRAIN类别和其他类别。 我想过这样的事情(或整数而不是字母):

var stim = [ ["AEROPLANE", A], ["TRAIN", B], ["CAR", C], ["BIKE", C], ["WALKING",C] ];

但这不起作用。如果我有类别,我将如何访问它们以编写代码响应?

这是一个呈现刺激的脚本(每个按键上都有一个新的):

$(function(){
    $(document).keypress(function(e){
        if ($(e.target).is('input, textarea')) {
            return;
        };
        if (e.which === 97 || e.which === 108) {
            new_word = w_stim[Math.floor(Math.random() * stim.length)];;
            $("#abc").text(new_word);
        };
        });
});

2 个答案:

答案 0 :(得分:1)

制作一个对象数组:

var stim = [ 
    {name:"AEROPLANE", category:"A"}, 
    {name:"TRAIN", category:"B"}, 
    {name:"CAR", category:"C"}, 
    {name:"BIKE", category:"C"}, 
    {name:"WALKING",category:"C"} 
];

然后访问像:

这样的对象
   stim[i].name
   stim[i].category

JS小提琴: http://jsfiddle.net/pJ6X2/

答案 1 :(得分:1)

另一种选择是

var stim = {
  'A': ['AEROPLANE'],
  'B': ['TRAIN'],
  'C': ['CAR', 'BIKE', 'WALKING']
}

var items = stim[categoryChar];
if (undefined === items)
  console.log('no such category');
else
  console.log(items[Math.floor(Math.random() * items.length)]);