数组的方法
如何学习一个方法? —— 方法的作用、方法的参数、方法的返回值、代码示例(完成一个demo)
继承自 Object 的方法
数组是一种特殊的对象,每个对象都继承了 Object 的 toString()、toLocalString() 和 valueOf() 方法。
[ toString() ] 把数组转换成字符串,用逗号分隔每一项
// 该方法的返回值与不使用任何参数调用join()方法返回的字符串相同 [1,2,3].toString(); // '1,2,3' ['a','b','c'].toString(); // 'a,b,c' [1,[2,'c']].toString(); // '1,2,c'
[ valueOf() ] 返回数组对象本身
var a = [1, 2, 3]; console.log(a.valueOf()); // [1, 2, 3] console.log(a.valueOf() instanceof Array); // true
数组的常用方法?!
1. 栈操作(先进后出)
push() pop() // 取出数组中的最后一项,修改length属性2. 队列操作(先进先出)
push() shift() // 取出数组中的第一个元素,修改length属性 unshift() // 在数组最前面插入项,返回数组的长度3. 排序方法
reverse() // 翻转数组 sort() // 即使是数组soft也是根据字符,从小到大排序[ 带参数的 sort ]
4. 操作方法
concat() // 把参数拼接到当前数组 slice() // 从当前数组中截取新的数组,不影响原数组 splice() // 删除或替换当前数组的某些项,参数 [start,end)5. 位置方法
indexOf() lastIndexOf() // 如果没有找到返回 -16. 迭代方法
every() filter() forEach() map() some()7. 将数组的所有元素连接到一个字符串中
join()
清空数组
方式 1(推荐):arr = []; 方式 2:arr.length = 0; 方法 3:arr.slice(0,arr.length);
复制数组
(1)push
function copyArray(arr){ var result = []; for(var i = 0; i < arr.length; i++){ result.push(arr[i]); } return result; } var obj1=[1,2,3]; var obj2=copyArray(obj1); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3] obj2.push(4); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3,4](2)join // 缺点:数组中的项全部变为字符串形式
function copyArray(arr){ var result = []; result = arr.join().split(','); return result; } var obj1=[1,2,3]; var obj2=copyArray(obj1); console.log(obj1); //[1,2,3] console.log(obj2); //['1','2','3'] obj2.push(4); console.log(obj1); //[1,2,3] console.log(obj2); //['1','2','3',4](3)concat
function copyArray(arr){ var result = []; result = arr.concat(); return result; } var obj1=[1,2,3]; var obj2=copyArray(obj1); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3] obj2.push(4); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3,4](4)slice
function copyArray(arr){ var result = []; result = arr.slice(); return result; } var obj1=[1,2,3]; var obj2=copyArray(obj1); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3] obj2.push(4); console.log(obj1); //[1,2,3] console.log(obj2); //[1,2,3,4](5)深拷贝 // 以上方法实现的仅是数组的浅拷贝,如果要实现数组的深拷贝,需要使用递归方法
function copyArray(arr,result){ var result = result || []; for(var i = 0; i < arr.length; i++){ if(arr[i] instanceof Array){ result[i] = []; copyArray(arr[i],result[i]); }else{ result[i] = arr[i]; } } return result; } var obj1=[1,2,[3,4]]; var obj2=copyArray(obj1); console.log(obj1[2]); //[3,4] console.log(obj2[2]); //[3,4] obj2[2].push(5); console.log(obj1[2]); //[3,4] console.log(obj2[2]); //[3,4,5]