数组的方法?
增:
前增:
unshift(数据)
作用: 在数组的首部增加元素。
返回值:新增后数组的长度
是否影响原数组: 是
var arr = [5,6,7,8,9];
console.log(arr.unshift(true,false,[1,2,3])); //8
console.log(arr); //[true,false,[1,2,3],5,6,7,8,9]
后增:
push(数据)
作用: 在数组的尾部增加元素
返回值:新增后数组的长度
是否影响原数组: 是
var arr = [5,6,7,8,9];
console.log(arr.push(true,false,[1,2,3])); //8
console.log(arr); //[5,6,7,8,9,true,false,[1,2,3]]
删:
前删:
shift()
作用:删除数组首部的元素(一次只能删除一个元素)
返回值:被删除的元素
是否影响原数组:是
var arr = [5,6,7,8,9,10];
console.log(arr.shift()); //5
console.log(arr); //[6,7,8,9,10]
后删:
pop()
作用:删除数组尾部的元素(一次只能删除一个元素)
返回值:被删除的元素
是否影响原数组:是
var arr = [5,6,7,8,9,10];
console.log(arr.pop()); //10
console.log(arr); //[5,6,7,8,9]
思考:如何删除数组中所有的元素?
改:
splice(start,deletelength,newEle,newEle,newEle,……)
作用:可以在数组的任意位置,删,改,增的操作
返回值: 返回被删除的元素数组
是否影响原数组:是
//删
var arr = [5,6,7,8,9,10];
console.log(arr.splice(1)); // [6,7,8,9,10]
console.log(arr); // [5]
//删
var arr = [5,6,7,8,9,10];
console.log(arr.splice(1,2)); // [6,7]
console.log(arr); // [5,8,9,10]
//改
var arr = [5,6,7,8,9,10];
console.log(arr.splice(1,2,true,false,null)); // [6,7]
console.log(arr); // [5, true, false, null, 8, 9, 10]
//增
var arr = [5,6,7,8,9,10];
console.log(arr.splice(1,0,true,[false,null])); // []
console.log(arr); // [5, true, Array(2), 6, 7, 8, 9, 10]
截:
slice(start,end)
作用:在数组中截取指定范围的数组元素
返回值: 返回被截取到的新数组
是否影响原数组:否
var arr = [5,6,7,8,9,10];
console.log(arr.slice(2)); // [7,8,9,10]
console.log(arr); // [5, 6, 7, 8, 9, 10]
var arr = [5,6,7,8,9,10];
console.log(arr.slice(2,5)); // [7,8,9]
console.log(arr); // [5, 6, 7, 8, 9, 10]
拼:
concat(元素)
作用: 在指定的数组后拼接新的元素(如果元素是数组,只拆分最外层数组进行拼接。)
返回值: 返回拼接后的新数组
是否影响原数组:否
var arr = [5,6,7,8,9,10];
console.log(arr.concat(2,5,[1,2,3,[4,5,6]])); // [5,6,7,8,9,10,2,5,1,2,3,[4,5,6]]
console.log(arr); // [5, 6, 7, 8, 9, 10]
复:
var arr = [5,6,7,8,9,10];
//var newArr = arr.slice(0);
var newArr = copyArr(arr);
console.log(arr,newArr);
arr[0] = true;
console.log(arr,newArr);
function copyArr(arr){
return arr.slice(0);
}
var a = 3;
var b = a;
console.log(a,b);
a = 4;
console.log(a,b);
var arr = [5,6,7,8,9,10];
var newArr = copyArr(arr);
console.log(arr,newArr);
arr[0] = true;
console.log(arr,newArr);
function copyArr(arr){
return arr.concat();
}
var arr = [5,6,7,8,9,10];
var newArr = copyArr(arr);
console.log(arr,newArr);
arr[0] = true;
console.log(arr,newArr);
function copyArr(arr){
var list = [];
for(var i = 0,len = arr.length;i < len;i ++){
list.push(arr[i]); //[5,6,7,8,9,10]
//list[i] = arr[i];
}
return list;
}
排:
1. reverse()
作用:逆序数组
返回值: 返回逆序后的数组
是否影响原数组:是
var arr = [5,6,7,8,9,10];
console.log(arr.reverse()); //[10, 9, 8, 7, 6, 5]
console.log(arr); //[10, 9, 8, 7, 6, 5]
2. sort()
作用:默认将数组中的元素自动转为字符串进行从小到大的排列。
返回值:排序后的数组
是否影响原数组:是
var arr = [5,6,7,18,'a','你','我',9,10];
console.log(arr.sort()); //[10, 18, 5, 6, 7, 9]
console.log(arr); //[10, 18, 5, 6, 7, 9]
sort(function(a,b){ return a - b;})
作用:数组以数字的方式从小到大排列
var arr = [5,6,7,18,9,10];
console.log(arr.sort(function(a,b){return a - b;})); //[5,6,7,9,10,18]
console.log(arr); //[5,6,7,9,10,18]
sort(function(a,b){return b - a;})
作用:数组以数字的方式从大到小排列
var arr = [5,6,7,18,9,10];
console.log(arr.sort(function(a,b){return b - a;})); //[18,10,9,7,6,5]
console.log(arr); //[18,10,9,7,6,5]
转:
1. toString()
作用:将数组转为字符串
返回值:返回转换后的字符串
是否影响原数组:否
var arr = [5,6,7,18,9,10];
console.log(arr.toString()); //"5,6,7,18,9,10"
console.log(arr); //[5,6,7,18,9,10]
作用:将一个数字转成指定的进制字符串
var iNum = 10;
console.log(iNum.toString(2),iNum.toString(8),iNum.toString(16),iNum.toString(3));
2. join('字符')
作用:将数组转为指定连接符的字符串
返回值: 返回转换后的字符串
是否影响原数组:否
var arr = [5,6,7,18,9,10];
console.log(arr.join('<=>')); '5<=>6<=>7<=>18<=>9<=>10'
console.log(arr.join('写啥,啥连接')); //'5写啥,啥连接6写啥,啥连接7写啥,啥连接18写啥,啥连接9写啥,啥连接10'
console.log(arr.join('')); //'56718910'
console.log(arr.join('\n'));
console.log(arr); //[5,6,7,18,9,10]
*/
var arr = [5,6,7,18,9,10];
console.log(arr.join('<=>')); '5<=>6<=>7<=>18<=>9<=>10'
console.log(arr.join('写啥,啥连接')); //'5写啥,啥连接6写啥,啥连接7写啥,啥连接18写啥,啥连接9写啥,啥连接10'
console.log(arr.join('')); //'56718910'
console.log(arr.join('\n'));
console.log(arr); //[5,6,7,18,9,10]