数组方法(数组是对象 属于引用类型)
ES5之前的方法(ES3)
push 该方法用于向数组的末尾增加一项
参数是数组的新成员
返回值 是数组的长度
var arr = [1, 2, 3, 4, 5];
// 增加一项6
arr[5] = 6;
// 通过方法增加一项
var length = arr.push(6);
console.log(length);
pop 该方法用于从数组的末尾移除一项 并返回该项
console.log(arr.pop());
unshift 该方法用于往数组的头部增加一项 并返回数组的长度
console.log(arr.unshift(1000));
shift 该方法用于从数组的头部移除一项 并返回该项
console.log(arr.shift());
concat 连接 该方法的作用是给数组连接新成员
参数有任意个,都是会被拼接到新数组中的成员 如果参数中有数组 会把这个数组拆开
返回值是连接完毕的新数组,它不会改变原来的数组
var arr = [1];
var arr1 = [2, 3];
// 把arr 和 arr1 连接起来
var arr2 = arr.concat(10, 20, 33, arr1);
console.log(arr2)
reverse 将一个数组逆序
返回值是原数组
也会影响到原数组
var arr = ["a", "b", "c", "d", "e"];
var arr1 = arr.reverse();
console.log(arr);
console.log(arr1);
console.log(arr === arr1);
sort方法 该方法只适用于内部成员都是数字的情况
var arr = [1, 11, 44, 4, 5, 67, 6, 78, 345, 89, 8];
// 如果不传递参数 会按照第一位数的数字从小到大排序
arr.sort();
console.log(arr);
// 如果传递参数 参数是一个函数 该函数有两个参数 a b 如果返回a - b 则升序排列 如果返回b - a则降序排列
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
join方法 该方法用于将数组以参数作为间隔转换成字符串
参数默认是 “,”
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
console.log(arr.join("☆"));
slice(start, end) 该方法用于截取一段数组中的成员
start: 开始截取的下标位置
end: 结束截取的下标位置(不包含)
左闭右开:包含左侧 不包含右侧
可以接收一个参数 表示从start截取到最后
可以不接收参数 表示全部截取
参数可以是负数 表示从后往前数(负数是从-1开始)
如果第一个参数比第二个参数要大 截取的是空数组
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
var arr1 = arr.slice(2, 6); // [3, 4, 5, 6]
var arr2 = arr.slice(2); // [3, 4, 5, 6, 7, 8]
var arr3 = arr.slice(); // [1, 2, 3, 4, 5, 6, 7, 8]
var arr4 = arr.slice(0, -1); // [1, 2, 3, 4, 5, 6, 7];
var arr5 = arr.slice(-4, -1); // [5, 6, 7]
var arr6 = arr.slice(-4); // [5, 6, 7, 8]
splice(pos, num, …) 该方法用于操作数组
pos: 表示操作数组的位置
num: 表示要删除几项
之后的每一个成员表示要向pos位置插入的成员
var arr = [1, 2, 3, 4, 5, 6, 7, 8];
// 1 将3移除
var result = arr.splice(2, 1);
console.log(arr);
console.log(result);
//2 将3替换成9
var result = arr.splice(2, 1, 9);
console.log(arr);
console.log(result);
// 3 在5前面插入5个1
var result = arr.splice(4, 0, 1, 1, 1, 1, 1);
console.log(arr);
console.log(result);
// 4 当都只传递1个参数时 默认从该位置往后都移除
var result = arr.splice(1);
console.log(arr);
console.log(result);
ES5的数组方法
forEach方法
forEach 用于循环 参数是一个函数 该函数会执行数组.length次
函数有3个参数
第一个参数是数组成员
第二个参数是数组成员的索引值
第三个参数是数组本身
该方法没有返回值
var arr = [1,2,3,4,5,6,7,8,9];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
console.log(i); //当循环结束后,在当前作用域中会增加一个变量i
arr.forEach(function(value,index,self){
console.log(value,index,self);
return;
});
数组的方法map
用于循环 参数是一个函数 该函数会执行数组.length次
函数有3个参数
第一个参数是数组成员
第二个参数是数组成员的索引值
第三个参数是数组本身
map方法的返回值是一个新数组 数组长度与原数组保持一致 数组的成员是参数函数的返回值
var arr1 = arr.map(function(value,index,self){
console.log(value);
return value * 1.3;
});
console.log(arr1);
fill 用于填充数组
接收3个参数
第一个参数是 填充数
第二个参数是 填充的起始位置(可选)
第三个参数是 填充的结束位置(可选)
//将数组的每一个成员都填充为0
arr.fill(0);
//将数组的从第二个开始往后都填充为0
arr.fill(0,1);
//将数组的从第二个开始到第四个填充为0
arr.fill(0,1,4);
some 该方法属于断言方法 用于判定数组中是否有存在符合某种条件的成员
接收一个函数作为参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
函数要有返回值 通常是符合某种条件的判定表达式
返回值是一个布尔值 只要有任何一个成员符合了函数的描述 就返回真 都不符合才返回假
例:判定arr中是否有字符串
法一:
var result = false;
for(var i = 0;i<arr.length;i++){
if(typeof arr[i] === "string"){
result = true;
break;
}
}
console.log(result);
法二:
var result = arr.some(function(value,index,self){
console.log(value);
return typeof value === "string"
});
console.log(result);
every 该方法也是断言方法 用于判定数组中是否有存在符合某种条件的成员
接收一个函数作为参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
函数要有返回值 通常是符合某种条件的判定表达式
返回值是一个布尔值 只要有任何一个成员不符合函数的描述 就返回假 都符合才返回真
var result = arr.every(function(value,index,self){
return typeof value === "number";
});
console.log(result);
indexOf 用于查找数组中是否存在某一个成员
如果找得到就返回该成员的下标 如果找不到就返回 -1
第一个参数是要查找的成员
第二个参数是要查找的起始位置
var index = arr.indexOf(5,4);
console.log(index);
var arr1 = [];
var arr = [1,undefined,null,"str",arr1,{},function(){}];
var result = arr.indexOf(arr1);
console.log(result);//5
**注:indexOf方法比较时使用的是全等判定**
filter 该方法用于过滤 参数是函数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回值是符合参数函数条件表达式的成员组成的数组
var arr1 = arr.filter(function(value,index,self){
return value %2===0;
});
console.log(arr1);
ES6的数组方法
find 用于查询数组中的成员 接收一个函数作为参数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回符合函数条件表达式描述的第一个数组成员 如果找不到 返回undefined
var arr = ["张三","李四","王五","赵六","田七"];
var username = arr.find(function(value,index,self){
return value.indexOf("五")!=-1;
});
console.log(username); //"王五"
findIndex 用于查询数组中的成员的索引 接收一个函数作为参数
函数有三个参数
函数的第一个参数是成员
函数的第二个参数是索引
函数的第三个参数是数组本身
该函数返回一个条件表达式
返回符合函数条件表达式描述的第一个数组成员的索引 如果找不到 返回 -1
var arr = ["张三","李四","王五","赵六","田七"];
var username = arr.findIndex(function(value,index,self){
return value.indexOf("五")!=-1;
});
console.log(username); //2
copyWithin 负责数组的内部复制 接收三个参数
第一个表示操作位置
第二个表示复制的开始位置(包含)
第三个表示复制的结束位置(不包含)
操作结果: 从第二个参数开始复制到第三个参数 再将复制的成员 从第一个参数位置开始替换 */
var arr = [1,2,3,4,5,6];
arr.copyWithin(0,3,5);
console.log(arr);//4 5 3 4 5 6
Array.of 该方法用于定义数组
var arr = Array.of(5);//无论几个参数都是数组内容
var arr1 = new Array(5);
console.log(arr);
console.log(arr1);
Array.from 该方法用于将类数组对象 转为 数组
var lis = document.getElementsByTagName(“li”);
var arr = Array.from(lis); //(10) [li, li, li, li, li, li, li, li, li, li]
ES6之前的转换方式:[].slice.call(lis);
数组题目
- 定义一个含有30个整数元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中,并输出这个数组。试编程。var arr = [2, 4, 6, 8, …, 60]
function bianli(){ var arr = []; for(var i=0;i<30;i++){ arr[i]=2*(i+1); } return arr; } var arr = bianli(); var arr2 = []; var sum = 0; for(var i=0;i<arr.length;i++){ sum +=arr[i]; if((i+1)%5===0){ arr2.push(sum/5); sum = 0; } } console.log(arr2);
2.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数试编程。
var arr = [];
var arr1 = [];
for( var i=0;i<25;i++){
arr.push(i+1);
if((i+1)%5===0){
arr1.push(arr);
arr = [];
}
}
console.log(arr1);
3.编写函数map(arr) 把数组中的每一位数字都增加30%,并返回一个新数组
function map(arr){
var arr1 = [];
for(var i = 0;i<arr.length;i++){
arr1[i] = arr[i] *(1.3);
}
return arr1;
}
var arr = [100,200,300,400,500];
console.log(map(arr));
4.创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息 并循环输出在控制台中 当循环结束之后 要求该对象为空对象(不能够有任何属性)
var student = {
id:"201611",
idCard:"123456789123",
age:30,
sex:"女",
zhuan:"计算机"
}
for( var i in student){
console.log(student[i]);
delete student[i];
}
console.log(student);
5.*/* 2. 反转函数请实现一个函数reverse,
该函数可以将一个数组内的内容反转 /
var arr = [1, 2, 3, 4, 5, 6];
function reverse(arr){
var arr1 = [];
for(var i=arr.length-1;i>=0;i--){
arr1.push(arr[i]);
}
return arr1;
}
var newArr = reverse(arr);
console.log(newArr);