zoukankan      html  css  js  c++  java
  • 每天一个JS 小demo之原生数组splice方法书写。主要知识点:锻炼思维逻辑能力,对于数组方法的理解和各种情况的考量

    <!DOCTYPE html>
    <html lang="en">
    <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>

  • 相关阅读:
    设计模式之工厂模式大后期
    Net基础恶补
    TPL异步并行编程之回调
    Net线程安全集合
    【记录贴】树的深度最优路径分析 [ 未完全版 ] 【原】
    java生产环境增量发版陷阱【原】
    expdp和impdp导入导出用法【转】
    exp和imp导入导出时表空间问题【未完】
    linux xargs【转】
    windows cmd命令 批处理bat 导增量jar包【原】
  • 原文地址:https://www.cnblogs.com/catEatBird/p/6947411.html
Copyright © 2011-2022 走看看