オブジェクトを使用して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