子曰:“学而时习之,不亦说乎?”
虽然我觉得这里的习字应该理解为实践练习,而不是复习,但是这里权当我理解错了吧o(╯□╰)o。
今天就整理一下js中删除数组元素的方法,包括原生API和自定义API。
原生API:
- 删除数组最后一个元素,arr.pop(),并返回该元素,对原数组有影响。
- 删除数组第一个元素,shift(),并返回该元素,对原数组有影响。
- 删除从数组start下标开始,往后count个元素。 splice(start, count),返回删除元素/数组,对原数组有影响。
{splice的完整用法应该是 splice(start,delCount, item1,item2…),即删除指定元素后,添加一些新元素,如果不写新元素,则为删除效果}
自定义API:
4.通过给Array对象的原型对象prototype添加一个新方法来实现。原理是找到传入下标/元素位置后,让后面的数组元素覆盖前面的数组元素,最后数组长度减1.
/**
*删除数组指定下标或指定元素。
*/
Array.prototype.remove = function (obj) {
for (var i = 0; i < this.length; i++) {//遍历数组。
var temp = this[i];
if (!isNaN(obj)) {//判断传入参数是下标数字还是元素。是下标数字,就将temp赋值为i;有个bug,如果传递的元素是‘1234’这样字符串形式的数字,就无法删除。
temp = i;
}
if (temp == obj) {//当遍历到传入的下标/元素位置时,进入下面循环。
for (var j = i; j < this.length; j++) {//将下标为i之后的元素,往前移动。这样就覆盖了该下标。最后记得数组长度减1.
this[j] = this[j + 1];
}
this.length = this.length - 1;
}
}
}
var arr = ['jude', 'wangwang', '1234', '通知制品', {
uname: 'tom',
score: 500
}]
var str = '1234';
console.log(arr);
arr.remove(2);
arr.remove('jude')
console.log(arr);