`
yiminghe
  • 浏览: 1432397 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

splice 参数问题

阅读更多

splice 在 ie 与 firefox,chrome之间表现不太一致,希望大家以后也小心一点,今天遇到记录一下:

 

[1,2,3].splice(1)

 

ie下运行后变为 [1,2,3] ,相当于

 

[1,2,3].splice(1,0)

 

firefox ,chrome运行后变为 [1],相当于

 

[1,2,3].splice(1,[1,2,3].length-1)

 

这就涉及到了 splice第二个参数的默认值问题,看看 ECMA-262-5th 规范


Array.prototype.splice (start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )


The length property of the splice method is 2.


证明 splice 函数申明有两个形参 start 与 deleteCount ,当调用者忽略deleteCount则deleteCount为undefined,那么看一下具体对于deleteCount的处理:


Let actualDeleteCount be min(max(ToInteger(deleteCount),0), len – actualStart).


而 ToInteger又依赖调用了 ToNumber


1.Let number be the result of calling ToNumber on the input argument.
2.If number is NaN, return +0.
3.If number is +0, −0, +∞, or −∞, return number.
4.Return the result of computing sign(number) * floor(abs(number)).


最后 ToNumber则规定 当遇到Undefined时返回NaN,那么ToInteger返回0,那么最后 actualDeleteCount为 0


则 IE表现为符合标准的正确行为,不知道为何 firefox,chrome没有遵从标准.



ps: 在 OReilly.JavaScript.The.Definitive.Guide.5th.Edition 中支持firefox,chrome的做法:


array.splice(start, deleteCount, value, ...)


deleteCount

The number of elements, starting with and including start, to be deleted from array. This argument is optional; if not specified, splice( ) deletes all elements from start to the end of the array.

不解

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论
1 楼 feipigzi 2012-08-06  
w3c 标准 :如果删除数量不指定,则默认删除开始位置后面的所有元素

相关推荐

    JavaScript中的splice方法用法详解

    JavaScript中的splice主要用来对js中的数组进行操作,包括删除,添加,替换等。 注意:这种方法会改变原始数组!。 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数) ...

    JavaScript splice()方法详解

    语法arrayObject.splice(index,howmany,element1,…..,elementX)参数 描述index 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。howmany 必需。规定应该删除多少元素。...

    浅谈js数组splice删除某个元素爬坑

    先来看下几个概念: // splice:返回从原始数组中删除的项(如果没有任何删除,则返回空数组) ...本身是没问题 代码如下: var arr = [张三,李四,王五,赵六]; // 删除王五 arr.splice(arr.indexOf(王

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

    JavaScript数组的splice()方法改变数组的内容,增加了新的元素,同时消除旧元素。 语法 array.splice(index, howMany, [element1][, ..., elementN]); 下面是参数的详细信息: index : 在该索引开始改变的数组。 ...

    原生JS中slice()方法和splice()区别

    slice()方法和splice()方法都是原生...该参数没有,表示从开始位置截取到数组末尾,如果是负数,表示从数组末尾向前截取元素。该方法不会修改原数组,如果想删除数组中某一段元素,使用splice()方法。 splice(),数组中

    JavaScript中splice与slice的区别

    splice与slice是数组中的两个常用方法,但是很多初学者很容易将二者混淆。 slice的操作不影响原数组。会返回所选择的元素。 splice往数组中指定位置添加或删除元素,会影响原数组。返回被删除的元素。 slice() 可从...

    JavaScript中数组slice和splice的对比小结

    今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法——splice和splice,看着很像,就是多了一个p,但是用法却相当不一样。 在使用中,可以通过选择一个具有强语义表达性的 API 来减少混淆的...

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

    语法 array_splice(array,offset,length,array)参数 描述 array 必需。规定数组。 offset 必需。数值。如果 offset 为正,则从输入数组中该值指定的偏移量开始移除。如果 offset 为负,则从输入数组末尾倒数该值...

    体验js中splice()的强大(插入、删除或替换数组的元素)

    处理数组的方法很多,javascript splice()算是最强大的了,它可以用于插入、删除或替换数组的元素。下面来一一介绍! 1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数...

    javascript中不易分清的slice,splice和split三个函数

    参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选) //如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾 var a=[1,2,3,4,5,6]; var b=a.slice(0,3); //[1,2,...

    splice slice区别

    arrayObj.slice(start, [end]) 参数 arrayObj 必选项。一个 Array 对象。 start 必选项。arrayObj 中所指定的部分的开始元素是从零开始计算的下标。 end 可选项。arrayObj 中所指定的部分的结束元素是从...

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

    [,itemN]]]]) 参数 arrayObj 必选项。一个 Array 对象。 start 必选项。指定从数组中移除元素的开始位置,这个位置是从 0 开始计算的。 deleteCount 必选项。要移除的元素的个数。 item1, item2,. . .,itemN 必选项...

    Splice:Splice是一个可入侵的基于浏览器的文本编辑器,使用HTMLCSSJS和PHP编写

    识别常见的Web技术语言(html / css / js / php) 测试网址参数内置文件管理器(测试版) 可配置的主题,模式易于设置和迁移版本0.1中要添加的功能全面的离线支持连接设备的热装项目状态当前版本:版本0在Firefox上...

    js删除数组中某几项的方法总结

    splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空 如:arr = [‘a’,’b’,’c’,’d’] 删除 —- item不设置 ...

    javascript-js删除数组中指定元素

    `splice()` 方法接受两个参数:要删除的元素的索引和要删除的元素的个数。如果要删除的元素只有一个,可以将第二个参数设为 `1`。 例如,如果要删除数组 `arr` 中的第二个元素,可以使用以下代码: const arr = ['...

    javascript中substr,substring,slice.splice的区别说明

    某些情况下,负数的参数不识别.所以尽量不要用负数作参数.免得浏览器不兼容,造成程序的出错.

    JS在Array数组中按指定位置删除或添加元素对象方法示例

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

    JS 在数组指定位置插入/删除数据的方法

    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 语法 arrayObject.splice(index,howmany,item1,…..,itemX)  参数说明 参数 描述 index 必需。整数,规定添加/删除项目的位置,使用负数可...

    Js删除数组中某一项或几项的几种方法(推荐)

    splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标 len: 替换/删除的长度 item:替换的值,删除操作的话 item为空 如:arr = [‘a’,’b’,’c’,’d’] 删除 —- item不...

    数组任意位置插入元素,删除特定元素的实例

    如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( ...简单介绍一下array_splice方法,参数一就是被操作的数组,参数二是操作元素的索引值,参数三是长度

Global site tag (gtag.js) - Google Analytics