是否可以使用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 要在===
内执行的语句只是用于解释的占位符
答案 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>
答案 1 :(得分:0)
您可以使用Jquery的inArray方法而无需使用循环
$.inArray(value, array)
返回数组中的值索引。返回 - 如果数组不包含值
,则返回1