<!doctype html> <html> <head> <meta charset="utf-8"> <title>title</title> </head> <body> <script> /* * splice(start, deletecount, data1, data2, data3...) * */ var arr = ['a', 'b', 'c', 'd', 'e']; //1, 3 // [8,6,4] //['a',8,6,4] //arr.splice(-5); //console.log(arr); function arrsplice(data, start, deletecount) { // 如果start不是数字,或不能转成数字,start默认就为0 if (isnan(start)) { start = 0; } start = number(start); // 如果start是负数 if (start < 0) { start = data.length + start; } if (start < 0) { start = 0; } // 如果deletecount没传 if (deletecount == undefined) { deletecount = data.length - start; } /* * 1. 准备一个空的数组,用于存放最后的结果 * 2. 循环源数组 * 1. 得到当前循环过程中的下标 * 2. 把这个下标和start做比较 * 1. 如果当前下标小于start,则把当前数组添加到新数组中 * 2. 否则 * 1. 是否有新增数据 * 1. 如果有新在数据,则把新增数据添加到新数组中 * 2. 否则,如果deletecount大于0,忽略这个数据,并对deletecount-- * 否则,把当前数据添加到新数组中 * */ var newarr = []; //新增数据 var newdata = []; if (arguments.length > 3) { for (var i=3; i<arguments.length; i++) { // newdata.push(arguments[i]); newdata[newdata.length] = arguments[i]; } } for (var i=0; i<data.length; i++) { if (i < start) { // newarr.push(data[i]); newarr[newarr.length] = data[i]; } else { if (newdata.length) { //有新增数据的 // newarr = newarr.concat(newdata); for (var j=0; j<newdata.length; j++) { newarr[newarr.length] = newdata[j]; } newdata.length = 0; } if (deletecount > 0) { deletecount--; } else { // newarr.push(data[i]); newarr[newarr.length] = data[i]; } } } data = newarr; console.log(data); } </script> </body> </html>
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!