2017-08-07 3 views
1

JavascriptまたはJqueryを使用してオブジェクトプロパティをlocalstorageに保存された変数と比較できますか?オブジェクトプロパティをJavaScriptのlocalstorageの変数と比較する

var persons = [ 
    { 
    "firstName": "Dwight", 
    "surName": "Stender", 
    "picture": "https://randomuser.me/api/portraits/med/men/99.jpg", 
    "id": "1" 
    } 
] 

そして、私は(名前はclickIdある)のlocalStorageに保存されている変数を持っている:ここでは、だから私はこのようなオブジェクトを持っている...私は何を意味するか

です。今私はオブジェクトからのIDをlocalstorgeのその変数に比較したいと思います。私は彼らが動作することを知っているので、私は両方のコンソールにそれらを印刷することができます。しかし、私はそれらを比較しようとすると、突然idと変数に同じ番号が入っていても、それはもう働きません。

for (i = 0; i < persons.length; i++) { 
    if (persons[i].id == localStorage.clickId) { 
     document.getElementById("result").innerHTML = "yay" 
    } else { 
     document.getElementById("result").innerHTML = "nay" 
    }; 
}; 

注1if...else内で実行される2つの文を===代わり

==の注意を持つ2つを比較しようとしている私はプレースホルダである:これは私は2つの比較方法であります説明の目的で

+0

このコードの問題点は何ですか? –

答えて

5

以前に保存したオブジェクトを取得するには、localStorage.getItem(key)を使用する必要があります。また、localStorageは文字列を保持できるだけなので、オブジェクトを保存する前後にシリアル化する必要があることにも注意してください。

some()を使用して、forループを無効にし、ifを簡略化するために3者を使用できます。あなたは、配列内の値のループ

$.inArray(value, array) 

戻り値インデックスを使用することなく、jQueryののInArrayバリ方法を使用することができます

var persons = [{ 
    "firstName": "Dwight", 
    "surName": "Stender", 
    "picture": "https://randomuser.me/api/portraits/med/men/99.jpg", 
    "id": "1" 
}]; 

var person = JSON.parse(localStorage.getItem('person') || '{}'); 
document.getElementById("result").innerHTML = persons.some(p => p.id == person.clickId) ? "yay" : 'nay'; 

localStorage.setItem('person', JSON.stringify({ 
    clickId: 1 
})); 
<div id="result"></div> 

Working example

+0

だから直接比較することはできませんか? localstorage変数を別の変数に格納する必要がありますか? – Kevin

+0

はい - 'localStorage'はキーと値のペアを含む辞書です。あなたが期待している方法で情報を保存しません。私はあなたにもっと完全な例を与えるために答えを更新しました。 –

+0

さて、わかりましたように、「(clickId、1)」が既にlocalstorageに保存されていれば、getItem( 'person')をgetItem( 'clickId')に変更すれば十分でしょうか? – Kevin

0

。戻り値 - 配列に値が含まれていない場合は1

関連する問題