为什么我的数组过滤器返回'undefined不是函数'?

时间:2014-06-05 18:23:03

标签: javascript jquery arrays

我有这段代码:

var options = [{
    "n":   function(a){return a;},
    "l1":   function(a){return a.duration<1;},
    "1to3": function(a){return a.duration>=1 && a.duration<3;},
    "3to6": function(a){return a.duration>=3 && a.duration<=6;},
    "6to10": function(a){return a.duration>=6 && a.duration<=10;},
    "m10": function(a){return a.duration>10;}
}];

var e = document.getElementById('duration');
var selopt = e.options[e.selectedIndex].value;

var arr = arr.filter(options[ selopt ]); //This line returns the error

我在指定的行中收到此错误。数组arr是具有持续时间值的对象数组。我知道selopt会返回正确的值,所以我不知道出了什么问题。

1 个答案:

答案 0 :(得分:2)

  

我知道selopt会返回正确的值

是的,但options[ selopt ]没有。

您的options变量包含一个包含一个对象的数组,而不是对象本身。使用

…options[0][selopt]…

var options = { // no [
    …
};