我试图用一个对象设置一个 inArray 但它不起作用
var test = {aa:1, bb:0}
console.log($.inArray(1,test))
我总是-1
谢谢
我试图用一个对象设置一个 inArray 但它不起作用
var test = {aa:1, bb:0}
console.log($.inArray(1,test))
我总是-1
谢谢
{} = 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
在您的代码中,您正在做其他事情。实际上,您正在尝试使用对象文字创建一个对象,该对象具有属性aa
和bb
. 键是aa
和bb
不是0
, 1
。你可以试试这个:
var test = { aa:1, bb:0 };
console.log('aa' in test); //true
如果你希望你的钥匙是0
,1
你可以尝试:
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