您的位置:新葡亰496net > 服务器网络 > 新葡亰496netJS在Array数组中按指定位置删除或添加

新葡亰496netJS在Array数组中按指定位置删除或添加

发布时间:2019-11-24 05:31编辑:服务器网络浏览(182)

    JavaScript的数据中可通过splice/slice在指定位置添加或删除元素。另外还有slice、delete等方法实现。

    splice与slice是数组中的两个常用方法,但是很多初学者很容易将二者混淆。

    1 splice()

    1.splice()

    splice() 方法用于插入、删除或替换数组的元素。
    注意:splice方法会改变原始数组!

    array.splice(index,howmany,item1,.....,itemN)

    1. index: 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字
    2. howmany: 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
    3. item1,...itemN: 可选。要添加到数组的新元素

    slice() substring() substr()

    splice简介

    slice的操作不影响原数组。会返回所选择的元素。

    1.1 说明

    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。Link

    splice()——直接上代码

    var names = ["wills", "kris", "april","willschang"];
    
    # 增加内容
    #在index=2的位置开始添加
    names.splice(2,0,"jacket","john");
    # names
    #["wills", "kris", "jacket", "john", "april", "willschang"]
    
    # 移除数据并增加内容
    var names = ["wills", "kris", "april", "willschang"];
    names.splice(2,1,"jacket","john");
    #返回数据['april']
    # names变成["wills", "kris", "jacket", "john", "willschang"]
    
    # 删除数据, 从第三个位置开始删除数据,若不指定删除几个,默认删除到结尾
    var names = ["wills", "kris", "jacket", "john", "willschang"]
    names.splice(2)
    # 返回数据[ "jacket", "john", "willschang"]
    # names变成["wills", "kris"]
    

    1、substring(start,stop) 用于提取字符串介于两个指定下标之间的字符,返回一个新的字符串,从start到stop-1,长度为stop-start

    splice方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

    splice往数组中指定位置添加或删除元素,会影响原数组。返回被删除的元素。

    1.2 语法

    arrayObject.splice(index,howmany,item1,.....,itemX)
    

    参数

    • index: 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    • howmany: 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    • 新葡亰496netJS在Array数组中按指定位置删除或添加元素对象方法示例_javascript技巧_脚本之家。item1, ..., itemX: 可选。向数组添加的新项目。

    返回值

    • Array: 包含被删除项目的新数组,如果有的话。

    slice()

    slice() 方法可从已有的数组中返回选定的元素。
    slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
    注意: slice() 方法不会改变原始数组。

    array.slice(start, end)

    1. start: 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    2. end: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    2、slice(start,end) 提取字符串的某部分,并以新的字符串返回被提取的部分,一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。

     arrayObject.splice(index, howmany, item1, ..., itemX)
    

    slice()

    1.3 示例

    //添加项目
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arr.splice(1, 0, 9, 10); //索引位置/ 删除数量/ 可选, 添加项目, 可多个
        console.log(arr); //[0, 9, 10, 1, 2, 3, 4]
    }());
    //删除项目
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arr.splice(1, 2);
        console.log(arr); //[0, 3, 4]
    }());
    //删除并添加项目
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arr.splice(1, 2, 9, 10, 11);
        console.log(arr); //[0, 9, 10, 11, 3, 4]
    }());
    

    slice()——直接上代码

    var names = ["wills", "kris", "april", "willschang"];
    names.slice(2,3)
    # ['april']
    # names不变,仍为 ["wills", "kris", "april", "willschang"]
    

    示例图

    新葡亰496net 1

    sp.jpg

    3、substr(start,length) 提取从start开始指定数目的字符,
    一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

    可从已有的数组中返回选定的元素。

    2 slice()

    String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。
    slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
    4、split(seporter,howmany) 把一个字符串,按照sepoter分割成字符串数组,而join()是把字数组,转换成字符串
    String.split() 执行的操作与 Array.join 执行的操作是相反的。
    参数
    描述

    howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。

    arrayObject.slice

    2.1 说明

    slice() 方法可从已有的数组中返回选定的元素。该方法并不会修改数组,而是返回一个子数组

    separator
    必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。

    item1, ..., itemX 可选。向数组添加的新项目。

    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

    2.2 语法

    arrayObject.slice(start,end)
    

    参数

    • start: 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    • end: 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    返回值

    • 返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

    howmany
    可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

    使用示例

    end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    2.3 示例

    //截取中间一段
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arrS = arr.slice(1, 3); //从索引1开始到索引3之前, 不包括索引3的项目
        console.log(arrS); //[1, 2]
    }());
    //截取中间到最后
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arrS = arr.slice(1); //end为空, 从索引1开始到结束
        console.log(arrS); //[1, 2, 3, 4]
    }());
    //获取最后一个项目
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arrS = arr.slice(-1); // -1个项目到最后, -1即最后一个, -2倒数第二个
        console.log(arrS); //[4]
    }());
    //排除最后一个项目
    (function(){
        var arr = [0, 1, 2, 3, 4];
        arrS = arr.slice(0, -1); // 第一个到第-1个, 不包含第-1个(最后一个)
        console.log(arrS); //[0, 1, 2, 3]
    }());
    

    JavaScript方法splice()和slice()

    数组的 Array 的slice()
    arrayObject.slice(start,end)

    var arr = [1, 2, 3, 4, 5];arr.splice;console.log //[1, 2, 4, 5]
    
    var arr = [1, 2, 3, 4, 5];arr.splice;console.log; //[4, 5]
    
    var arr = [1,2,3,4,5,6]arr.slice //返回[3]
    

    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    在第2个元素后,添加新数字 9

    splice()

    返回一个新数组,从start到end(不包括该元素),注意slice()并不删除元素,如果删除元素,使用splice()

    var arr = [1, 2, 3, 4, 5];arr.splice;console.log //[1, 2, 9, 3, 4, 5]
    

    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

    splice()方法从数组添加删除项目,然后返回被删除的数组,该方法会改变原始数组。

    Array.insert 添加

    注释:该方法会改变原始数组。arrayObject.splice(index,howmany,item1,.....,itemX)

    arrayObject.splice(index,howmany,item1,item2,item3.....)

    借助splice可以在array上面添加一个原生的insert方法,直接操作数组:

    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

    index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, ..., itemX 可选。向数组添加的新项目。

    Array.prototype.insert = function { index = Math.min; arguments.length > 1 && this.splice.apply(this, [index, 0].concat([].pop.call && this.insert.apply; return this;};
    
    var arr = [1, 2, 3, 4, 5];arr.insert;console.log; // [1, 2, -1, -2, -3, 3, 4, 5]
    

    howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。

    Array.remove 删除

    item1, ..., itemX 可选。向数组添加的新项目。

    也可以用slice在array上面添加一个原生的remove方法

    如,向数组的起始位置插入一个新的元素 -1

    Array.prototype.remove = function { var rest = this.slice   1 || this.length); this.length = from < 0 ? this.length   from : from; return this.push.apply;};
    
    var arr = [1, 2, 3, 4, 5];arr.remove; //第3个元素索引是2console.log; //[1, 2, 4, 5]
    
    var arr = [1,2,3,4,5,6]arr.splice //返回[],第二个参数为0,即不删除任何元素console.log> [-1, 1, 2, 3, 4, 5, 6]
    

    这里使用了slice方法,简介如下:

    用slice复制数组

    slice简介

    使用 slice 可以快速复制并生成 一个新的数组,不过数组是新的,里面的元素还是原来的引用,比如:

    slice() 方法可从已有的数组中返回选定的元素。返回一个新数组,不修改原有数组。

    var o = [1, 2]var arr = [ 3, 4, o ]var clone = arr.slice> [3, 4, Array[2]]
    
    arrayObject.slice
    

    用concat复制数组

    start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

    Array.concat 数组拼接函数也可以用来复制数组,比如:

    end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

    var o = [1, 2]var arr = [ 3, 4, o ]var clone = arr.concat> [3, 4, Array[2]]
    

    总结

    不过 slice和concat 生成的数组是新的,但里面的元素还是原来的引用,比如:

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    clone[2].push> [1, 2, 3]
    

    用JSON parse/ strinigfy 进行深度复制

    可以使用 JSON.parse 对对象或数组进行快速深度复制,此种方法无法复制 function 等无法序列化的对象,比如:

    var o = [1, 2]var arr = [ 3, 4, o ]var clone = JSON.parseconsole.log> [3, 4, Array[2]]clone[2].push> [1, 2] //o元素没有变化
    

    //www.jb51.net/w3school/jsref/jsref_slice_array.htm

    //www.jb51.net/w3school/jsref/jsref_splice.htm

    本文由新葡亰496net发布于服务器网络,转载请注明出处:新葡亰496netJS在Array数组中按指定位置删除或添加

    关键词: