在js
中数组是经常被使用到的,我们除了要进修数组的要领,还需要相识诶一下某一些要领是怎样来完成的。但是我看了《javascript言语精炼》中要领的一章,想纪录下书上的代码,以便加深印象。
Array pop()
pop
和push
要领使得数组能够从客栈一样事情。
Array.method('pop', function(){
return this.splice(this.length - 1, 1)[0];
});
Array push()
push
要领把一个或很多个的参数附加到一个数组的尾部。
Array.method('push', function(){
this.splice.apply( this, [this.length, 0].concat(Array.prototype.slice.apply(arguments)));
return this.length;
});
Array shift()
shift
要领移除数组中的第一个元素而且放回该元素。
Array.method('shift', function(){
return this.splice(0, 1)[0];
});
Array.unshift()
unshift
要领像push
一样,用于把元素添加到数组中,但它是吧参数插进去到数组最先部份而不是尾部。
Array.method('unshift', function(){
this.splice.apply(this, [0, 0].concat(Array.prototype.slice.apply(arguments)));
return this.length;
});
Array splice()
splice
要领从数组中移除一个或很多个元素,而且用新的参数替代它们。
Array.method('splice', function(start, deleteCount){
var max = Math.max,
min = Math.min,
delta, el,
insertCount = max(arguments.length - 2, 0),
k = 0,
len = this.length,
new_len, result = [], shift_count;
start = start || 0;
if (start < 0) {
start += len;
}
start = max(min(start, len), 0);
deleteCount = max(min(typeof deleteCount === 'number' ? deleteCount : len, len - start), 0);
delta = insertCount - deleteCount;
new_len = len + delta;
while (k < deleteCount) {
el = this[start + k];
if (el !== undefined) {
result[k] = el;
}
k += 1;
}
shift_count = len - start - deleteCount;
if (delta < 0) {
k = start = insertCount;
while (shift_count) {
this[k] = this[k - delta];
k += 1;
shift_count -= 1;
}
this.length = new_len;
} else if (delta > 0) {
k = 1;
while (shift_count) {
this[new_len - k] = this[len - k];
k += 1;
shift_count -= 1;
}
this.length = new_len;
}
for (k = 0; k < insertCount; k ++) {
this[start + k] = arguments[k + 2];
}
return result;
});
这里只是摘抄了书上的一些实例,另有很多数组的要领能够思索怎样去完成,如果有什么不对的地方请指教,与人人共勉!