删除JavaScript中的数组元素-删除VS拼接

删除JavaScript中的数组元素-删除VS拼接

使用这个delete操作者在数组元素上,而不是使用这个Array.splice方法?

例如:

myArray = ['a', 'b', 'c', 'd'];delete myArray[1];//  ormyArray.splice (1, 1);

如果我可以像删除对象一样删除数组元素,那么为什么还要使用Splice方法呢?


慕桂英3389331
浏览 671回答 4
4回答

心有法竹

delete将删除对象属性,但不会重新索引数组或更新其长度。这使它看起来似乎是未定义的:> myArray = ['a', 'b', 'c', 'd']   ["a", "b", "c", "d"]> delete myArray[0]   true> myArray[0]   undefined注意,它实际上没有设置为undefined,而是将属性从数组中移除,使其成为出现没有定义。Chrome dev工具通过打印明确了这一区别。empty记录数组时。> myArray[0]   undefined> myArray  [empty, "b", "c", "d"]myArray.splice(start, deleteCount)实际上移除元素,重新索引数组,并更改其长度。> myArray = ['a', 'b', 'c', 'd']   ["a", "b", "c", "d"]> myArray.splice(0, 2)   ["a", "b"]> myArray  ["c", "d"]

肥皂起泡泡

Array.emove()方法约翰·雷西格,jQuery的创建者创建了一个非常方便的Array.remove方法,以便在项目中始终使用它。//&nbsp;Array&nbsp;Remove&nbsp;-&nbsp;By&nbsp;John&nbsp;Resig&nbsp;(MIT&nbsp;Licensed)Array.prototype.remove&nbsp;=&nbsp;function(from,&nbsp;to)&nbsp;{ &nbsp;&nbsp;var&nbsp;rest&nbsp;=&nbsp;this.slice((to&nbsp;||&nbsp;from)&nbsp;+&nbsp;1&nbsp;||&nbsp;this.length); &nbsp;&nbsp;this.length&nbsp;=&nbsp;from&nbsp;<&nbsp;0&nbsp;?&nbsp;this.length&nbsp;+&nbsp;from&nbsp;:&nbsp;from; &nbsp;&nbsp;return&nbsp;this.push.apply(this,&nbsp;rest);};下面是一些如何使用它的例子://&nbsp;Remove&nbsp;the&nbsp;second&nbsp;item&nbsp;from&nbsp;the&nbsp;arrayarray.remove(1);//&nbsp;Remove&nbsp;the&nbsp;second-to-last&nbsp;item&nbsp;from&nbsp;the&nbsp;arrayarray.remove(-2); //&nbsp;Remove&nbsp;the&nbsp;second&nbsp;and&nbsp;third&nbsp;items&nbsp;from&nbsp;the&nbsp;arrayarray.remove(1,2); //&nbsp;Remove&nbsp;the&nbsp;last&nbsp;and&nbsp;second-to-last&nbsp;items&nbsp;from&nbsp;the&nbsp;arrayarray.remove(-2,-1);约翰网站

元芳怎么了

因为DELETE只从数组中的元素中删除对象,所以数组的长度不会改变。Splice移除对象并缩短数组。下面的代码将显示“a”、“b”、“未定义”、“d”myArray&nbsp;=&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d'];&nbsp;delete&nbsp;myArray[2];for&nbsp;(var&nbsp;count&nbsp;=&nbsp;0;&nbsp;count&nbsp;<&nbsp;myArray.length;&nbsp;count++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;alert(myArray[count]);}而这将显示“a”、“b”、“d”myArray&nbsp;=&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d'];&nbsp;myArray.splice(2,1);for&nbsp;(var&nbsp;count&nbsp;=&nbsp;0;&nbsp;count&nbsp;<&nbsp;myArray.length;&nbsp;count++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;alert(myArray[count]);}

温温酱

我无意中发现了这个问题,同时试图理解如何从Array中删除每个元素的出现。下面是一个比较的splice和delete为了移除每一个'c'从items阵列。var&nbsp;items&nbsp;=&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'a',&nbsp;'b',&nbsp;'c',&nbsp;'d'];while&nbsp;(items.indexOf('c')&nbsp;!==&nbsp;-1)&nbsp;{ &nbsp;&nbsp;items.splice(items.indexOf('c'),&nbsp;1);}console.log(items); &nbsp;&nbsp;&nbsp;//&nbsp;["a",&nbsp;"b",&nbsp;"d",&nbsp;"a",&nbsp;"b",&nbsp;"d"]items&nbsp;=&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'a',&nbsp;'b',&nbsp;'c',&nbsp;'d'];while&nbsp;(items.indexOf('c')&nbsp;!==&nbsp;-1)&nbsp;{ &nbsp;&nbsp;delete&nbsp;items[items.indexOf('c')];}console.log(items);&nbsp;//&nbsp;["a",&nbsp;"b",&nbsp;undefined,&nbsp;"d",&nbsp;"a",&nbsp;"b",&nbsp;undefined,&nbsp;"d"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript