jQuery inArray不起作用

时间:2013-09-03 23:22:33

标签: jquery arrays

我正在建立一个网站,我在php变量中有一些数据。 我正在尝试将这些数据用于支持Java的浏览器的jQuery引擎。

我遇到了在jQuery脚本中使用php变量的问题:

这是我无法工作的代码。

// PHP数组:

$filters['ab']='text a';
$filters['cd']='text b';

// jQuery脚本:

// Key I want to find in array
var test = "ab";

// Reading php array into JSON
filters = $.parseJSON('<?php echo json_encode($filters); ?>');

// Trying to use JSON data to create Array using original keys and values
var filtersArray = new Array();
$.each(filters, function(key) {
    filtersArray[key] = $(filters).attr(key);
});  
alert(filtersArray['ab']); returns "text a";  // Seems to be working

// Trying to find the test variable value
filterIndex = $.inArray(test, filtersArray) // Not found

对于之前粗略的帖子抱歉。我虽然越短越好,但实际上它完全没用。

由于

2 个答案:

答案 0 :(得分:2)

我认为你需要这样的东西

function inObject(obj, val) {
    return Object.keys(obj).filter(function(key) {
        return obj[key] === val;
    }).length > 0;
}

这里的jsFiddle演示 - http://jsfiddle.net/VZ5A9/

有关浏览器兼容性以及添加支持的填充程序

,请参阅以下页面

更新

如果您需要找到密钥,请尝试使用此密钥(这也与旧版浏览器更兼容)

function findFirstKeyByValue(obj, val) {
    for (var key in obj) {
        if (obj.hasOwnProperty(key) && obj[key] === val) {
            return key;
        }
    }
    return null;
}

演示 - http://jsfiddle.net/VZ5A9/1/

答案 1 :(得分:1)

这不起作用的原因是因为您命名为arr的变量不是数组,而是一个对象文字。要使此代码生效,请尝试此操作(FIDDLE):

arr = ["b","d","f"];
uri = "d";

alert(jQuery.inArray(uri, arr));