PHP前端开发

JS之原生数组splice方法实例

百变鹏仔 3个月前 (10-18) #H5教程
文章标签 数组

<!DOCTYPE html><html><head>   <meta charset="UTF-8">   <title>Title</title></head><body><script>/** splice(start, deleteCount, data1, data2, data3...)* */var arr = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;];//1, 3//    [8,6,4]//[&#39;a&#39;,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>