javascript 数组的数据删除 splice() 的问题
最近在做一个项目中遇到一个javascript splice()删除 问题,这个问题,找了好久,才找到原因。同时也借助网站资源,最终解决。我项目中,想实现这个功能,数组中的某一个元素删除。
例如:数组值myarrays 这个是存储在cookie(the_cookieSelectFoodOrderCK) 里面的
根据查询条件 调用 deleteCookieDataFun(foodate,foodetype)传值(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!