检查localStorage中是否存在变量的值
check if a value of a variable exists in localStorage
我有这个if语句,如果变量值不等于localStorage值,那么执行代码。
for(i=0;i<tweets.length;i++){
tweetID = tweets[i][0].id_str;
if(tweetID != localStorage['tweet_id']){
alert("new tweet");
localStorage['tweet_id'] = tweetID;
console.log(localStorage['tweet_id']);
}
}
我的问题是,它总是进入if语句,表明该值永远不等于localStorage值。这段代码第一次运行时,它总是进入if语句,因为'tweet_id' localStorage项是未定义的。一旦它进入内部,它就应该将'tweetID'值写入localStorage值,正如您在我的代码中看到的那样。页面每30秒刷新一次,如果没有新的tweet,这些值应该匹配,而不是进入if语句。
事实并非如此。我做错了什么?
通过使用console.log这些值在它第一次进入if语句后匹配,所以它不应该再次进入那里,除非tweetID的值改变。任何想法将非常感激!
尝试:
if(tweeting !=JSON.parse(localStorage['tweet_text']))
或:
if(JSON.stringify(tweeting) != localStorage['tweet_text'])
当你将一个对象与JSON进行比较时,它将永远不会相同。
由于数据处于'for'循环中,单个本地存储项的值将被每个tweed ID覆盖,直到循环结束。这意味着localStorage项的最终值将始终是for循环中的最后一个tweet ID。因为这两个值永远不会匹配,导致它总是进入'if'语句。
由于@hodaya的回答,JSON对象的值在与localStorage项进行比较之前还必须转换为字符串。这是因为localStorage只将值存储为字符串。从@hodaya的回答中给出的例子;"JSON。stringify'用于将数组转换为JSON字符串,而'JSON。parse'用于将JSON字符串转换回数组。来源:微软。因此,这两个答案都不能单独解决问题。
答:
JSON对象的值必须转换为字符串。必须包含一个计数器,以使新的localStorage项对'for'循环中的每次迭代都是唯一的。
r=0;
for(i=0;i<tweets.length;i++){
//must have a counter added to each localStorage item to make it unique.
r+=1;
//transforming the JSON id_str into a JavaScript object.
tweetID = jQuery.parseJSON(tweets[i][0].id_str);
//tweetID is now an integer value
//converting it to a string ready for localStorage.
tweetIdString = tweetID.toString();
if(tweetIdString != localStorage['tweet_id' + r]){
alert("new tweet");
localStorage['tweet_id' + r] = tweetIdString;
console.log(localStorage['tweet_id' + r]);
}
}
嘿,很快!
- 为什么不允许值为0的变量询问是否存在
- AngularJS中存在与$scope变量相关的问题.UI中的值未更改
- 测试变量存在性的Javascript多重赋值:var obj=obj||{}
- 通过字符串形式的名称检查变量是否存在于本地作用域内
- 检查全局变量是否存在的正确方法是什么
- 验证JavaScript中是否存在变量
- javascript引擎:变量存在
- 如何将用户会话保存在PHP中的一个变量中,以便在JavaScript中引用
- 简写 if/else 变量存在
- 流星:如何避免检查到处是否存在变量或属性
- 等到元素存在,循环,然后存储在变量中
- 我的变量保存在 URL/位置中,如何从另一个页面读取它
- 处理 JavaScript 中不存在的变量
- q 从 .then 函数分配给更高级别的作用域变量是否存在任何陷阱
- 如果 Django 模板变量存在,则执行 Javascript
- 如果字符串变量存在,我如何从中删除包含[“”]
- 如果变量存在,则有条件地调用函数或脚本
- AngularJS $rootScope变量存在,但不可访问
- 如果变量存在...对象与变量,null与未定义
- Java脚本-给定字符串输入,查找是否有相同名称的变量,如果变量存在更改值