将对象属性与JavaScript中的localstorage中的变量进行比较

时间:2017-08-07 13:20:21

标签: javascript jquery html5

是否可以使用Javascript或Jquery将对象属性与存储在localstorage中的变量进行比较?这就是我的意思......

所以我有一个像这样的对象:

brew update

我有一个存储在localstorage中的变量(名称是clickId)。现在我想比较对象的id和localstorge中的变量。我可以将它们打印到控制台,所以我知道它们有效。但是当我尝试比较它们时,它突然不再起作用了(即使id和变量包含相同的数字)。这就是我比较两者的方法:

brew untap staticfloat/julia

注1 我还尝试将两者与var persons = [ { "firstName": "Dwight", "surName": "Stender", "picture": "https://randomuser.me/api/portraits/med/men/99.jpg", "id": "1" } ] 进行比较而不是for (i = 0; i < persons.length; i++) { if (persons[i].id == localStorage.clickId) { document.getElementById("result").innerHTML = "yay" } else { document.getElementById("result").innerHTML = "nay" }; };

注2 要在===内执行的语句只是用于解释的占位符

2 个答案:

答案 0 :(得分:5)

您需要使用localStorage.getItem(key)来检索先前存储的对象。另请注意,由于localStorage只能保存字符串,因此您需要在保存之前/之后序列化对象。 JSON对此非常理想:

另请注意,您可以使用some()取消for循环,使用三元来简化if

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

答案 1 :(得分:0)

您可以使用Jquery的inArray方法而无需使用循环

$.inArray(value, array)

返回数组中的值索引。返回 - 如果数组不包含值

,则返回1