提示:方法不唯一,欢迎补充
push()
在数组末尾添加元素
注意点:参数:任意类型的值;返回值:新数组长度;改变原数组
Array.prototype.cymPush = function () {
for (var i = 0, length = arguments.length; i < length; i++) {
this[this.length] = arguments[i]
}
return this.length
}
pop()
删除数组最后一个元素
注意点:参数:无;返回值:被删除的元素;改变原数组
Array.prototype.cymPop = function () {
if (!this.length) return undefined
let lastOne = this[this.length - 1]
this.length = this.length - 1
return lastOne
}
shift()
删除数组最后第一个元素
注意点:参数:无;返回值:被删除的元素,改变原数组
Array.prototype.cymShift = function () {
let FirstMove = this[0]
for (var i = 0, length = this.length; i < length; i++) {
this[i] = this[i + 1]
}
this.length -= 1
return FirstMove
}
unshift()
在数组首位添加元素
注意点:参数:任意类型的值;返回值:新数组长度;改变原数组
Array.prototype.cymUnshift = function () {
let aLength = arguments.length
let oldLength = this.length
this.length += aLength
for (var i = this.length - 1, j = oldLength - 1; i >= 0, j >= 0; i--, j--) {
this[i] = this[j]
}
for (var t = 0; t < aLength; t++) {
this[t] = arguments[t]
}
return this.length
}
五个迭代方法都不会改变原数组;
every()
注意:返回 true/false,
必须所有元素都满足条件才返回true,如果有一个元素不满足则直接return false
Array.prototype.cymEvery=function(fun,obj){
for(let i=0;i<this.length;i++){
if(!(obj?fun.call(obj,this[i],i,this):fun(this[i],i,this))){
return false
}
}
return true
}
some()
注意:返回 true/false,
如果有一个元素满足条件就直接return true,所有元素都不满足条件才return false
Array.prototype.cymSome=function(fun,obj){
for(let i=0;i<this.length;i++){
// 只要有一个满足条件 返回true
// call apply bind
if(obj?fun.bind(obj,this[i],i,this)():fun(this[i],i,this)){
return true
}
}
return false
}
map()
注意:返回新数组
Array.prototype.cymMap=function(fun,obj){
let newArr=[];
for(let i=0;i<this.length;i++){
newArr.push(obj?fun.call(obj,this[i]):fun(this[i]))
}
return newArr
}
filter()
注意:过滤符合条件的数组元素组成新数组返回
Array.prototype.cymFilter=function(fun,obj){
let newArr=[];
for(let i=0;i<this.length;i++){
if(obj?fun.call(obj,this[i]):fun(this[i])){
newArr.push(this[i])
}
}
return newArr;
}
forEach()
注意:遍历数组
Array.prototype.cymForEach=function(fun,obj){
for(let i=0;i<this.length;i++){
obj?fun.call(obj,this[i]):fun(this[i])
}
}