jQuery:如何检查数组中是否存在函数?

时间:2011-02-20 08:18:39

标签: jquery arrays indexing

我有以下代码,需要检查一个值是否作为数组键存在。

我似乎无法生成密钥的index,即使它确实存在,任何帮助都会很棒。

代码:

var run = { // store the actions to trigger

    block : function() {
        console.log('Blocking…');
    },

    warning : function() {
        console.log('Warning…');
    }

};

console.log( $.inArray( 'warning' , run ) );

据我所知,warning位于run{}内,应返回index 1

为什么上面找不到上述内容(index返回为-1)。

感谢阅读。

2 个答案:

答案 0 :(得分:6)

run不是数组(它只是一个普通对象),所以它没有索引。即使block位于warning之前,对象也是无顺序的,因此您不能说run的索引为1。

要检查对象是否有特定密钥,只需检查:

if ('warning' in run) {...}

或者:

if (run.warning) {...}

答案 1 :(得分:1)

您可以简单地使用:

console.log(run.warning);

如果你得到一个值,你就找到了你的功能。

至于索引 - run不是数组,它是一个对象(或一个哈希,或一个地图,取决于你何时来)。对象的属性没有订单,并且每次迭代时都不保证它们保持相同的顺序。