站长资讯网
最全最丰富的资讯网站

JS之原生数组splice方法实例

<!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>

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号