我試圖設置一個InArray與對象,但它不工作在數組JavaScript對象
var test = {aa:1, bb:0}
console.log($.inArray(1,test))
我總是有-1
感謝
我試圖設置一個InArray與對象,但它不工作在數組JavaScript對象
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
謝謝,那是wokrs :) – Ajouve
在你的代碼」重新做別的事。實際上你正在嘗試創建一個對象,使用對象字面值,它具有屬性aa
和bb
。鑰匙是aa
和bb
而不是0
,1
。如果你希望你的關鍵是0
var test = { aa:1, bb:0 };
console.log('aa' in test); //true
和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
是的這不是這就是爲什麼我編輯它並在我的答案是:'{aa:1,bb:0};':-) –
是的,但這是一個阿賈克斯結果,我不能輕易改變它 – Ajouve
所以你正在做一個阿賈克斯請求, '{aa = 1,bb = 0}'? –
這是因爲這不是一個數組。而且它也不是一個對象。 – j08691
因爲'test'不是一個數組。一個數組看起來像'var test = [1,0,...]' - 你不能在JavaScript中擁有關聯數組。 –
它甚至是一個有效的語法? –