当前位置:首页 > HTML5教程 > HTML5高阶

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>

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐