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>

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/catEatBird/p/6947411.html
Copyright © 2011-2022 走看看