javascript 数组的数据删除 splice() 的问题

        最近在做一个项目中遇到一个javascript splice()删除 问题,这个问题,找了好久,才找到原因。同时也借助网站资源,最终解决。我项目中,想实现这个功能,数组中的某一个元素删除。

      例如:数组值myarrays 这个是存储在cookie(the_cookieSelectFoodOrderCK) 里面的

 

 根据查询条件 调用 deleteCookieDataFunfoodatefoodetype)传值(1,1)并删除,然后把没有删除数据转化为json字符串,保存在cookie中。

 

 1     //删除订餐截止时间的菜品
 2     function deleteCookieDataFun(foodate, foodetype) {
 3         //先读cookie 的值
 4         var cookieCK = $.cookie('the_cookieSelectFoodOrderCK'); //读取 cookie
 5         var myarrays = eval(cookieCK); //转化器 把数组字符串转化成数组对象
 6          7         if (myarrays == null) {  //检测 cookie 有没有值 
 8             //默认设置为 一个空间 数组
 9             myarrays = new Array();
10             $.cookie('the_cookieSelectFoodOrderCK', '[]', { path: "/", expires: -1 }); // 删除 cookie
11         } else {
12             for (var i = 0; i < myarrays.length; i++) {
13                 //根据订餐类型和日期
14                 if (myarrays[i].fooDate.toString() == foodate.toString() && myarrays[i].foodType.toString() == foodetype.toString()) {
16                     myarrays.splice(i); //从数组 删除
18                 }
19             }
20             var objString = JSON.stringify(myarrays); //JSON 数据转化成字符串
21             $.cookie('the_cookieSelectFoodOrderCK', '[]', { path: "/", expires: -1 }); // 存储 cookie
22             $.cookie('the_cookieSelectFoodOrderCK', objString, { path: "/", expires: 1 }); // 添加 cookie
23 
24         }
25     }

 

  这里的结果 objString值就是“[]”数组。没有达到预期结果。后来再网上找一些资料 修改for循环里 myarrays.splice(i)

 1     //删除订餐截止时间的菜品
 2     function deleteCookieDataFun(foodate, foodetype) {
 3         //先读cookie 的值
 4         var cookieCK = $.cookie('the_cookieSelectFoodOrderCK'); //读取 cookie
 5         var myarrays = eval(cookieCK); //转化器 把数组字符串转化成数组对象
 6          7         if (myarrays == null) {  //检测 cookie 有没有值 
 8             //默认设置为 一个空间 数组
 9             myarrays = new Array();
10             $.cookie('the_cookieSelectFoodOrderCK', '[]', { path: "/", expires: -1 }); // 删除 cookie
11         } else {
12             for (var i = 0; i < myarrays.length; i++) {
13                 //根据订餐类型和日期
14                 if (myarrays[i].fooDate.toString() == foodate.toString() && myarrays[i].foodType.toString() == foodetype.toString()) {
15 
16                     myarrays.splice(i, 1); //从数组 删除
17                     i = i - 1; // 必须对i减去1,否则后面的一个元素会被跳过去
18                 }
19             }
20             var objString = JSON.stringify(myarrays); //JSON 数据转化成字符串
21             $.cookie('the_cookieSelectFoodOrderCK', '[]', { path: "/", expires: -1 }); // 存储 cookie
22             $.cookie('the_cookieSelectFoodOrderCK', objString, { path: "/", expires: 1 }); // 添加 cookie
23 
24         }
25     }

 如果没有 i=i-1;就会把怎么数组元素删除完,就会变成空数组。

 就这样ok!

posted @ 2015-01-10 20:32  KenyonLi  阅读(1026)  评论(0编辑  收藏  举报