`

IE 下的array 的splice方法的bug

阅读更多

今天写代码,才发现 IE 下的array 的splice方法的bug

   var a=["a","b"];

   a.splice(0);
   alert(a.length)  //  在IE 下是2, 在谷歌下是 0

 

按照定义,splice()的第二个参数不写,就是删除到末尾,不知道为啥,IE就认为一个都不删除。

经查证,问题出在IE8及以下版本,可以修复此bug, 网上给的方案是

// check if it is IE and it's version is 8 or older
    if (document.documentMode && document.documentMode < 9) {
    	
    	// save original function of splice
    	var originalSplice = Array.prototype.splice;
    	
    	// provide a new implementation
    	Array.prototype.splice = function() {
    	    var arr = [],  i = 0,  max = arguments.length;
    	    
    	    for (; i < max; i++){
    	        arr.push(arguments[i]);
    	    }
    	    
    	    // if this function had only one argument
    	    // compute 'deleteCount' and push it into arr
    	    if (arr.length==1) {
    	        arr.push(this.length - arr[0]);
    	    }
    	    
    	    // invoke original splice() with our new arguments array
    	    return originalSplice.apply(this, arr);
    	};
    }

 

分享到:
评论

相关推荐

    php中array_slice和array_splice函数解析

    array array_splice ( array &$input , int $offset , int $length [, mixed $replacement = array() ] ) ``` - `input`:要操作的数组,注意是引用传递,所以原数组会被修改。 - `offset`和`length`与`array_slice...

    JavaScript中的splice方法用法详解

    由于splice方法会直接修改原数组,所以在使用时需要谨慎,尤其是当你不希望改变原数组的情况下。 1. 删除元素: 当调用splice方法时,提供两个参数:第一个参数是要删除的第一项的位置(从0开始计数),第二个参数...

    Array.slice()与Array.splice()的返回值类型

    最近做个练习,用到Array.slice()和Array.splice(),以前没有注意其返回值类型 Array.slice()返回Array — 一个由原始数组中某一范围的元素构成的数组。 Array.splice()返回Array — 包含从原始数组中删除的元素的...

    解析array splice的移除数组中指定键的值,返回一个新的数组

    特别是在涉及到数组元素键值对的情况下,array_splice可以让我们更灵活地操作数组元素。 例如,在一个简历保密设置中,如果需要根据公司的关键词来控制简历是否显示,那么array_splice就能派上用场。假设每份简历都...

    PHP中unset,array_splice删除数组中元素的区别

    如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排:...答案是array_splice(): &lt;?php $arr = array('a','b','c','d'); array_splice($arr,1,1); print_r($arr); ?&gt; 结果是: Array

    js_array-method-splice

    在JavaScript中,`Array.prototype.splice()` 是一个非常重要的方法,它允许我们对数组进行增、删、改操作。本篇文章将深入探讨`splice()`方法的工作原理,并通过自定义实现来帮助理解其内部机制。 `splice()` 方法...

    php数组函数序列之array_splice() – 在数组任意位置插入元素

    array_splice定义和用法 array_splice() 函数与 array_slice() 函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其它值代替。 如果提供了第四个参数,则之前选中的那些元素将被第四个参数指定的数组...

    js利用Array.splice实现Array的insert/remove

    Array.prototype.splice() 是JavaScript数组对象的一个内置方法,它可以完成数组中元素的添加、删除以及替换等操作。本知识点主要围绕Array.prototype.splice() 方法如何实现数组元素的插入和删除展开讨论。 首先,...

    array方法1

    Array.splice() 方法在数组中插入或删除元素的通用方法。不同于 slice(),concat().splice() 会修改调用的数组。Splice() 能够从数组中删除元素、插入元素到数组中或者同时完成这两种操作。在插入或删除点之后的数组...

    JavaScript中的splice()方法使用详解

    JavaScript中的`splice()`方法是数组的一个非常强大的工具,它允许我们对数组进行增删改操作。这个方法在处理数组时提供了很大的灵活性,可以用于插入、删除或者替换数组中的元素。下面我们将详细讲解`splice()`方法...

    JavaScript splice()方法详解

    定义和用法splice() 方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,…..,elementX)参数 描述index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素...

    splice-string:删除或替换部分字符串,例如Array#splice

    删除或替换部分字符串,例如Array#splice 它可以正确处理带有表情符号的切片字符串。 安装 $ npm install splice-string 用法 import spliceString from 'splice-string' ; spliceString ( 'unicorn' , 3 , 4 , '...

    flex array 一些操作

    本文将详细介绍几种常用的Array操作方法:`push`、`pop`、`unshift`、`shift`以及`splice`,并探讨如何通过`delete`关键字和修改`length`属性来实现对数组的动态调整。 #### `push` 方法 `push`方法用于向数组的...

    php数组函数序列之array_splice() - 在数组任意位置插入元素

    下面我们将深入探讨 `array_splice()` 的功能、语法以及如何使用它。 ### 1. `array_splice()` 的定义和用法 `array_splice()` 函数接收四个参数: 1. **数组**:必需,你要操作的目标数组。 2. **offset**:必需...

    javascript object array方法使用详解.docx

    `Array.prototype.splice` 方法用于添加/删除数组中的元素。它接受两个必需的参数:要添加/删除的元素的位置以及要删除的元素数量。此外,还可以接受一个或多个可选参数,用于指定要在指定位置插入的元素。 ```...

    splice性能测试

    splice_copy.c和rw_copy.c这两个文件名暗示了博主可能编写了两个C语言程序,一个是利用splice函数进行数据传输,另一个可能是使用传统的read和write函数,以对比两种方法的性能。这些源代码可以作为理解splice工作...

Global site tag (gtag.js) - Google Analytics