2017-12-25 19 views
2
let database = [{ 
     name: 'James Bond', 
     code: '007' 
    }, 
    { 
     name: 'El', 
     code: '11' 
    } 
] 

let subject = { 
    name: 'James Bond', 
    code: '007' 
} 

database.indexOf(subject) 

これは-1を返します。私はここで同様の質問を見つけましたが、キー値のペアと比較することで、オブジェクトのインデックスを見つけることをほとんど要求していました。配列からオブジェクトのインデックスを取得する方法[JavaScript]?

+0

理由はあなたが*異なる*オブジェクトによってそれを検索しようとしているということです。 'database [0]'と 'subject'は、同じ値を持っていても、異なるオブジェクトです。彼らは異なるメモリアドレスを指しています。オブジェクトが同じに見えるかどうかを比較する必要があります。あるいは、 'database [0] = subject'で' database.indexOf(subject) 'が正しいとすれば、あなたは望むことができます。 – vlaz

答えて

0

DOCS

からのindexOf()メソッドたfromIndexで 検索を開始する、指定された値の最初の出現の呼び出し文字列 オブジェクト内のインデックスを返します。値が見つからない場合は-1を返します。

使用findIndex

DEMO

let database = [{ 
 
     name: 'James Bond', 
 
     code: '007' 
 
    }, 
 
    { 
 
     name: 'El', 
 
     code: '11' 
 
    } 
 
] 
 

 
let subject = { 
 
    name: 'James Bond', 
 
    code: '007' 
 
} 
 

 
console.log(database.findIndex(x => x.name=="James Bond"))

0
let subInd ; 
database.forEach(function(ele,index){ 
    if(ele.name == subject.name && ele.code == subject.code){ 
    subInd=index; 
    }   
}); 
console.log(subInd); 
関連する問題