【问题标题】:jQuery: How can I check if a function exists in an array?jQuery:如何检查数组中是否存在函数?
【发布时间】:2011-06-30 16:04:45
【问题描述】:

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

我似乎无法生成密钥的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{} 中,应该返回index1

为什么上面没有找到(index 返回为-1)。

感谢阅读。

【问题讨论】:

  • $.inArray() 期望第二个参数是一个实际的数组。类似var arr = [1,2,'three', 3.5,4];

标签: jquery arrays indexing


【解决方案1】:

run 不是数组(它只是一个普通对象),因此它没有索引。尽管blockwarning 之前出现,但对象是无序的,因此您不能说run 的索引为1。

要检查一个对象是否有特定的键,只需检查:

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

或者:

if (run.warning) {...}

【讨论】:

  • 噢!感谢您的帮助,这很有意义。我现在真的应该知道{} != []。不管怎样,再次感谢。
【解决方案2】:

你可以简单地使用:

console.log(run.warning);

如果你得到一个值,你就找到了你的函数。

至于索引 - run 不是一个数组,它是一个对象(或散列或映射,取决于您来自何时)。对象的属性没有顺序,甚至不能保证每次迭代它们时都保持相同的顺序。

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2012-02-04
    • 2014-02-18
    • 2015-07-24
    • 2010-11-05
    • 1970-01-01
    • 2014-01-14
    相关资源
    最近更新 更多