1:push方法
/*
* push()方法
* 功能 : 主要给数组末尾添加数组
* 参数 : 通过,号连续传参
* 官方使用
* var arr = [1,2,3];
* arr.push(4,5,6); //arr = [1,2,3,4,5,6]
* arr.push([7,8,9]) //arr = [1,2,3,[7,8,9]]
*/
Array.prototype.ycPush = function(){
//循环ycPush 中传递的参数
for(var i=0;i<arguments.length;i++){
this[this.length] = arguments[i];
}
return this.length;
}
2:unshift方法
/*
* unshift()方法
* 功能 : 主要给数组起始位置添加数据
* 参数 : 通过,号连续传参
* 官方使用
* var arr = [1,2,3];
* arr.unshift(4,5,6); //arr = [4,5,6,1,2,3]
* arr.unshift([7,8,9]) //arr = [[7,8,9],1,2,3]
*/
Array.prototype.ycUnshift = function(){
//第一种方法
var param = arguments
,i=0
,k=0
,len = this.length;
//先改变原来数组的索引位置 给要添加的(老大)数据腾地方 往后挪一挪
for(;i < len;i++){
this[i+param.length] = this[i];
}
//把要添加的元素追加到this数组中
for(;k < param.length;k++){
this[k] = param[k];
}
return this.length;
//第二种方法
// var newArr = [];
// //保存newUnShift方法传递进来值
// loop(newArr,arguments,0);
// //保存当前数组的值
// loop(newArr,this,newArr.length);
// //重新赋值给当前数组
// loop(this,newArr,0);
// return this.length;
// function loop(addArr,loopArr,len) {
// for(var j=0;j<loopArr.length;j++){
// addArr[ parseInt(len+j) ] = loopArr[j];
// }
// }
//第三种方法
// //定义一个数组保存当前数组的值和newUnShift方法传递进来的参数
// var newArr = [];
// //循环newUnShift方法传递进来的参数并保存到newArr中
// for(var i=0;i<arguments.length;i++){
// newArr[i] = arguments[i];
// }
// var len = newArr.length;
// //循环当前要添加数组 也保存在newArr中
// for(var j=0;j<this.length;j++){
// newArr[ parseInt(len+j) ] = this[j];
// }
// //重新给当前数组插入合并后的数组值
// for(var k=0;k<newArr.length;k++){
// this[k] = newArr[k];
// }
// return this.length;
}
3:shift
/*
* shift()方法
* 功能 : 删除数组中第一位数据
* 参数 : 不需要 传递我也给你忽略
* 官方使用
* var arr = [1,2,3];
* arr.shift(); //arr = [2,3]
* arr.shift(4,5) //arr = [2,3]
*/
Array.prototype.ycShift = function(){
var _newArr = [];
//保存返回删除元素
var _saveDelete = this[0];
for(var i=1;i<this.length;i++){
_newArr[i-1] = this[i];
}
this.length = 0;
for(var i=0;i<_newArr.length;i++){
this[i] = _newArr[i];
}
//返回删除的元素
return _saveDelete;
}
4:pop方法
/*
* pop()方法
* 功能 : 删除数组中最后一位数据
* 参数 : 不需要 传递我也给你忽略
* 官方使用
* var arr = [1,2,3];
* arr.pop(); //arr = [1,2]
* arr.pop(4,5) //arr = [1,2]
*/
Array.prototype.ycPop = function(){
var deleteData = this[this.length-1];
this.length -= 1
//返回被删除的元素
return deleteData;
}
5:reverse方法(金山面试题)
/*
* reverse()方法
* 功能 : 数组的反转
* 参数 : 不需要 传递我也给你忽略
* 官方使用
* var arr = [1,2,3];
* arr.reverse(); //arr = [3,2,1]
* arr.reverse(4,5) //arr = [3,2,1]
*/
Array.prototype.ycReverse = function(){
//第一种方法
var i = this.length-1
,num = 0
,_cur = JSON.parse(JSON.stringify(this));
// var
for(;i >= 0; i-- ){
this[num] = _cur[i];
num++;
}
return this;
//第二种方法
// var _newArr = []
// ,i = this.length-1
// ,k = 0;
// for(;i >= 0;i--){
// _newArr[_newArr.length] = this[i];
// }
// for(;k < _newArr.length;k++){
// this[k] = _newArr[k];
// }
// return this;
}
6:indexOf方法
/*
* indexOf()方法
* 功能 : 返回indexOf括号中传递第一位字符串的匹配的下标
* 参数 : 第一个参数 要匹配的字符串 第二个参数 要从哪一位开始匹配。可忽略不写
* 官方使用
* var arr = [1,2,3];
* arr.indexOf(2); //下标 1
* arr.indexOf(2,0) //第0位是1 所以跟2不匹配返回-1
*/
Array.prototype.ycIndexOf = function(){
//要匹配的元素
var _macth = arguments[0];
var _location = arguments[1];
//匹配的下标
var _index = -1;
if(String(_location)){
_index = this[_location] == _macth ? _location : _index;
}else{
for(var i=0;i<this.length;i++){
_index = this[i] == _macth ? i : _index;
}
}
return _index;
}