阵列推送第一次不起作用
Array push doesnt work the first time
我有以下代码每秒运行一个函数
var counter=setInterval(timer, 1000);
var global = [];
function timer()
{
var strJSON = '[{"id":"1","timeout":"2013-09-11 03:00:00"},{"id":"2","timeout":"2013-09-11 03:00:00"}]';
var currentRequest = [];
var obj = jQuery.parseJSON(strJSON);
for (var i=0; i<obj.length; i++) {
var id = obj[i].id;
var timeout = obj[i].timeout;
if(id in global)
{
alert(id+' in array');
} else {
alert(id+' not in array');
alert(id+' added');
global.push(id);
}
}
}
我使用它来保持全局变量更新但没有重复项。但是,当脚本运行时,据说在第一次运行中添加了第二个 id,但它并没有真正添加,因为我得到以下输出:
/**首次运行 **/
- 1 不在数组中
- 已添加 1 个
- 2 不在数组中
- 已添加 2 个
第二次运行 **/
- 1 在阵列中
- 2 不在数组中
- 已添加 2 个
第三次运行 **/
- 1 在阵列中
- 2 在阵列中
我在这里做错了什么?
id in global
不用于检查数组中的元素。您需要改用.indexOf
。
> "1" in ["1","2"]
true
> "2" in ["1","2"]
false
property in object
是检查对象中是否存在属性。
数组是 0 索引的,因此 "0" in ["1","2"]
和 "1" in ["1", "2"]
是正确的,但不是 "2"
。
所以你需要改变
if(id in global)
自
if (global.indexOf(id) > -1)
注意:您需要一个不支持数组方法indexOf
旧浏览器的垫片。
相关文章:
- 删除确认对话框在第一次单击时不起作用
- jQuery Mobile pageinit在第一次加载页面上不起作用(可复制)
- 两个层次的手风琴除了第一次不起作用
- 按钮在第一次成功的 ajax 数据加载后不起作用
- 零剪贴板在第一次点击时不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- css'不显示'第一次不起作用
- 第一次用部分调用 Angular js 文件不起作用
- j查询克隆表单在同一页面中不起作用两次
- 按钮在第一次单击时不起作用
- 第一次在 JavaScript 中获取图像大小不起作用
- 第一次调用后单击时添加类不起作用
- 使用 WebView.loadUrl 执行 javascript 在第一次运行应用程序时不起作用
- 引导轮播不起作用(一次显示所有图像)
- JQuery :第一次按下时按键不起作用
- 在 onKeyup AJAX 调用第一次不起作用或按回键时
- Jquery在第一次调用时.css不起作用
- Jquery 滑块不起作用多次调用
- Javascript计算器退格键第一次不起作用
- 第一次双击后不起作用