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>

  • 相关阅读:
    Aspx后台遍历控件
    sql server 压缩日志文件
    C# 获取特殊日期
    sql特殊日期
    Oracle数据库基本知识-原理,实例,表空间,用户,表
    使用Visual Studio Code开发.NET Core看这篇就够了
    Windows上C++环境搭建
    JNA 教程
    SpringBoot项目改成Tomcat容器加载(打war包)
    centos7 离线安装神器yumdownloader
  • 原文地址:https://www.cnblogs.com/catEatBird/p/6947411.html
Copyright © 2011-2022 走看看