首页 > 代码库 > javascript 数组的数据删除 splice() 的问题

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 }); // 删除 cookie11         } 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 }); // 存储 cookie22             $.cookie(the_cookieSelectFoodOrderCK, objString, { path: "/", expires: 1 }); // 添加 cookie23 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 }); // 删除 cookie11         } 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 }); // 存储 cookie22             $.cookie(the_cookieSelectFoodOrderCK, objString, { path: "/", expires: 1 }); // 添加 cookie23 24         }25     }

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

 就这样ok!

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