Array对象
工作很长时间了总是搞不清楚Array几个参数,趁着晚上有空,把一些常用的方法做一个分析记录。
Array 对象用于在变量中存储多个值:
var arr = [11, 22, 33];
arr.map(p1,p2)
- 返回一个新数组,不会改变原数组,不会对空数组进行检测
- 参数1:p1是一个回调函数,会对arr进行遍历,并对每一个元素进行运算,并依次返回运算结果
let newArr = arr.map((c) => {
return c;
});
console.log(newArr);
//[11,22,33]
- 回调函数的三个参数callback(value,index,arr)
let newArr = arr.map((value,index,arr) => {
// value,当前遍历的元素值
// index,可选,当前遍历元素的索引
// arr,可选,指代原数组arr
});
- 参数2:p2是一个可选参数,这个参数可以灵活设置,并用在参数1中
let newArr = arr.map((c) => {
return c * a;
},a = 2);
console.log(newArr);
// [22,44,66]
let newArr = arr.map((c) => {
return c * a + b;
},a = 2, b = 1); // 参数二可以设置多个
console.log(newArr);
// [23,45,67]
arr.filter(p1,p2)
- 返回一个新数组,不会改变原数组,不会对空数组进行检测
- 参数1:p1是一个回调函数,会对arr进行遍历,并对每一个元素进行判断,并依次返回符合条件的元素
let newArr = arr.filter((c) => {
return c > 20;
});
console.log(newArr);
//[22,33]
- 回调函数的三个参数callback(value,index,arr)
let newArr = arr.filter((value,index,arr) => {
// value,当前遍历的元素值
// index,可选,当前遍历元素的索引
// arr,可选,指代原数组arr
});
- 参数2:p2是一个可选参数,这个参数可以灵活设置,并用在参数1中
let newArr = arr.filter((c) => {
return c > a;
},a = 20);
console.log(newArr);
// [22,33]
let newArr = arr.filter((c) => {
return c > a && c < b;
},a = 20, b = 25); // 参数二可以设置多个
console.log(newArr);
// [23]
arr.concat(p1)
- 用于连接两个或多个数组。不会改变现有的数组,而是返回被连接数组的一个副本。
var hege = ["Cecilie", "Lone"];
var stale = ["Emil", "Tobias", "Linus"];
var ss = [[1,2,3,4],{a:1}];
var boolValue = true;
var children = hege.concat(stale,ss);
var children2 = hege.concat(boolValue);
console.log(children);
// ["Cecilie", "Lone", "Emil", "Tobias", "Linus",[1,2,3,4], {a:1}]
// ["Cecilie", "Lone", true]
// concat函数,可用于多个数组之间的连接,也可以用于往数组后面添加元素
// 如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
arr.every(p1,p2)
- 用于检测数组所有元素是否 都符合 指定条件;
- 不会改变原数组,不会对空数组进行检测
- 如果所有元素都满足条件,则返回 true;如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 参数1:p1是一个回调函数,会对arr进行遍历,并对每一个元素进行判断,并根据函数体返回true or false
let result= arr.every((c) => {
return c > 10;
});
console.log(result);
//true
- 回调函数的三个参数callback(value,index,arr)
let result= arr.every((value,index,arr) => {
// value,当前遍历的元素值
// index,可选,当前遍历元素的索引
// arr,可选,指代原数组arr
});
- 参数2:p2是一个可选参数,这个参数可以灵活设置,并用在参数1中
let result= arr.every((c) => {
return c > a;
},a = 10);
console.log(result);
// true
let result= arr.every((c) => {
return c > a && c < b;
},a = 10, b = 40); // 参数二可以设置多个
console.log(result);
// true
- 和every()对应的是some() ,some函数,只要数组中有一个元素符合条件,就会返回true
arr.slice(p1,p2)
- 对数组进行截取,返回一个新的数组,但是不会改变原数组;
- 也可以对字符串截取,并返回新的字符串,不会改变原字符串
- 参数1:可选,截取时数组或者字符串的开始脚标(包含参数1元素)
- 参数2:可选,截取时数组或者字符串的结束角标(不包含参数2元素),如果没有参数2,表示截取到结束位置;
- 如果参数1参数2是负数,则表示从后往前数的脚标
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var myBest = fruits.slice(-3,-1); // 截取倒数第三个(包含)到倒数第一个(不包含)的两个元素
var myBest = fruits.slice(-3); // 截取最后三个元素
var str="www.runoob.com!";
document.write(str.slice(4)+"<br>"); // 从第 5 个字符开始截取到末尾
document.write(str.slice(4,10)); // 从第 5 个字符开始截取到第10个字符
arr.reverse()
- 用于颠倒数组中元素的顺序。
var newArr = arr.reverse();
console.log(newArr);
// [33,22,11]
from(p1,p2,p3)
- 用于通过拥有 length 属性的对象或可迭代的对象==(字符串或者数组)==来返回一个数组。
如果对象是数组返回 true,否则返回 false。
Array.from('foo');
// [ "f", "o", "o" ]
const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]
- 参数1:想要转换成数组的对象(可以是字符串或者数组)。
- 参数2:可选,如果指定了该参数,新数组中的每个元素会执行该回调函数。
- 参数3:可选,执行回调函数时的 this 对象。
Array对象的方法还有很多,一一列举颇为浪费时间,以上是我在工作中常会用到的,其他的方法以后或许会再补充。。