JScript内置对象Array中元素的删除问题
2005-01-07 21:51
459 查看
我们知道JScript给我们提供了一个内置的数组对象Array。Array对象除了提供了constructor、length和prototype外,还默认提供了13个方法:concat、join、pop、push、reverse、shift、slice、sort、splice、toLocaleString、toString 、unshift和valueOf,可是没有提供delete方法var ary = ['a', 'b', 'c'];
delete ary[1]; 如果正确的执行删除后,我们希望会得到一个新的数组,他有两个元素['a', 'c'],长度为2。可是执行完后我们确实是得到了两个元素['a', 'c']的数组,可是这个新数组的长度ary.length居然还是3!Array.prototype.remove = function(obj)
{
for ( var i=0 ; i < this.length ; ++i )
{
if ( this[i] == obj )
{
if ( i > this.length/2 )
{
for ( var j=i ; j < this.length-1 ; ++j )
{
this[j] = this[j+1];
}
this.pop();
}
else
{
for ( var j=i ; j > 0 ; --j )
{
this[j] = this[j-1];
}
this.shift();
}
break;
}
}
}; 移动整理数组的目的只是为了删除元素后不改变剩余元素的彼此相对位置,否则只用把需要删除的元素swap到两端pop或shift以下就可以了。
delete ary[1]; 如果正确的执行删除后,我们希望会得到一个新的数组,他有两个元素['a', 'c'],长度为2。可是执行完后我们确实是得到了两个元素['a', 'c']的数组,可是这个新数组的长度ary.length居然还是3!Array.prototype.remove = function(obj)
{
for ( var i=0 ; i < this.length ; ++i )
{
if ( this[i] == obj )
{
if ( i > this.length/2 )
{
for ( var j=i ; j < this.length-1 ; ++j )
{
this[j] = this[j+1];
}
this.pop();
}
else
{
for ( var j=i ; j > 0 ; --j )
{
this[j] = this[j-1];
}
this.shift();
}
break;
}
}
}; 移动整理数组的目的只是为了删除元素后不改变剩余元素的彼此相对位置,否则只用把需要删除的元素swap到两端pop或shift以下就可以了。
相关文章推荐
- JScript内置对象Array中元素的删除方法
- JScript内置对象Array中元素的删除方法
- 关于集合中在迭代器中用集合的对象删除元素的并发异常问题
- 【iOS】NSMutableArray遍历删除内部元素的问题总结
- JavaScript数组Array对象增加和删除元素方法总结
- JavaScript数组Array对象增加和删除元素方法总结
- JavaScript Array(数组)对象中指定元素的删除
- JavaScript数组Array对象增加和删除元素方法
- JS-Array数组内置对象
- 精通Flex 3.0――4.5.2 向Array中插入和删除元素
- 为什么Iterator的remove方法可保证从源集合中安全地删除对象,而在迭代期间不能直接删除集合内元素
- PHP中unset,array_splice删除数组中元素的区别
- 关于STL容器中vector特定元素的删除问题
- 倒计时定时器内删除元素节点问题
- std::map遍历删除某些元素问题
- leetcode:26&80 Remove Duplicates from Sorted Array 删除数组中的重复元素
- 一个 ArrayList 对象 aList 中存有若干个字符串元素,现欲遍历该 ArrayList 对象,删除其中 所有值为"abc"的字符串元素,请用代码实现。
- C++语法基础--关联容器--map(二)--查找并读取map中的元素count(),find()与 从map对象中删除元素erase()
- 查看NSMutableArray数组中是否相同对象,没有插入,有则删除
- 关于Python multiprocessing.Array创建的共享内存无法删除的问题