-3

我试图用一个对象设置一个 inArray 但它不起作用

var test = {aa:1, bb:0}
console.log($.inArray(1,test))

我总是-1

谢谢

4

2 回答 2

3
{} = object literal

[] = array object

$.inArray旨在与数组一起使用。正如您已经发现的那样,它不能与对象正常工作(无论情况如何,它都会返回 -1)。说到对象,你用来创建对象字面量的语法是不正确的,它不是写成,{ a = b }而是写成{ a : b }. 这是一个例子:

var test = { aa: 1, bb: 0 };

我还看到您正在尝试查找对象的属性是否具有特定,而不是对象完全具有该属性。如果是后一种情况,我们将使用in关键字或.hasOwnProperty函数。但是我们需要为您的案例制作自己的功能。尝试这个:

var inObject = function( obj, val ) {

    for ( var i in obj ) {

        if ( obj.hasOwnProperty(i) ) {

            if ( obj[i] === val ) return true;

        }

    }

    return false;

};

我们将像这样使用它:

>>> var test = { aa: 1, bb: 0 };

>>> inObject( test, 1 );
    true
于 2012-11-17T21:25:59.810 回答
2

在您的代码中,您正在做其他事情。实际上,您正在尝试使用对象文字创建一个对象,该对象具有属性aabb. 键是aabb不是0, 1。你可以试试这个:

var test = { aa:1, bb:0 };
console.log('aa' in test); //true

如果你希望你的钥匙是01你可以尝试:

var test = { 1: 'aa', 0: 'bb' };
console.log(1 in test);  //true

您还可以:

var test = { 1: 'aa', 0: 'bb' };
console.log(test['1']);  //"aa"

如果要检查对象是否包含值,只需:

function containsValue(obj, key) {
   for (var prop in obj) {
       if (obj[prop] === key) {
           return true;
       }
   }
   return false;
}
var test = { aa:1, bb:0 };
console.log(containsValue(test, 1)); //true
于 2012-11-17T21:17:18.693 回答