簡體   English   中英

在數組中查找指定的對象索引

[英]Finding Specified Object Index in Array

我有這個代碼:

var items = [{ value: 1, text: "one" }, { value: 2, text: "two" }, { value: 3, text: "three" }];
console.log(items.indexOf({ value: 2, text: "two" }));

我在控制台中得到此結果:

-1

但是我希望獲得對象索引,該怎么辦?

Javascript的Array.indexOf不比較對象的屬性。 它只使用===運算符 ===運算符不會僅僅因為它們是兩個不同的對象就認為您在第二行中創建的對象等於您在items數組中獲得的對象。

也許這會幫助您:

if ({"a":1} === {"a":1}) alert("equal"); else alert("not equal");

這兩個對象不相等。 因此,唯一的解決方案是迭代數組的所有項目,並將每個人的屬性與新對象進行比較(tymeJV的答案中提供)。

僅在firefox中還有一個內置的findIndex方法 ,使此任務更容易。

您必須迭代並檢查:

var index = -1;
for (var i = 0; i < items.length; i++) {
    if (items[i].value == 2 && items[i].text == "two") {
        index = i;
        break;
    }
}
console.log(index);

有點棘手,但它可以幫助您: JSFiddle演示

Array.prototype.indexOfObj = function(obj) {    
    for(var i = 0; i < this.length; i++) {
        if(JSON.stringify(this[i]) == JSON.stringify(obj)) {
            return i;   
        }
    }
    return -1;
}

用法:

console.log(items.indexOfObj({ value: 2, text: "two" }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM