一:从数组的首端到或尾端添加删除元素的方法(队列)
1 、push();从数组尾部添加元素
2、pop();从数组尾部删除元素
3 、unshift();从数组首部添加元素
4、shift();从数组首部删除元素
注意:以上四个方法都会改变原数组,并且从首部操作数组会增加消耗(索引重排)
二:其他方法添加删除元素的方法
1 、splice(pos , deleteCount , items);从pos开始删除deleteCount 个元素,并且插入items(新元素)
2 、slice(start , end);创建一个新的数组,截取原数组start到end(不包括end)的元素并放到新数组里面;
3 、concat(…items);返回一个新数组;复制当前数组的所有元素,并向其中添加items;如果items任意一个也是一个数组,那么就取其元素;
例如:
let arr = [1,2]
console.log( arr.concat([3,4]) )//1,2,3,4
console.log( arr.concat([3,4] , [5,6]) )//1,2,3,4,5,6
三:搜索元素
1、indexOf / lastIndexOf(item , pos);从pos位置开始搜索item,如果找到,返回item的位置(索引),如果没有找到,返回-1;
2、includes(item);如果数组有item,返回true;否则返回false;
3、find / filter(func);通过func来过滤元素
例如:find(func)
//find如果它返回 true,则搜索停止,并返回 item。如果没有搜索到,则返回 undefined
let users = [
{id: 1, name: "张睿"},
{id: 2, name: "李爽"},
{id: 3, name: "孟强"}
];
let user = users .find((item , index , array)=>item.id>1)
console.log(user) // {id: 2, name: "李爽"}
为什么没有返回 {id: 3, name: “孟强”}呢?
因为 find 如果它返回 true,则搜索停止,并返回 item。如果没有搜索到,则返回 undefined
例如:filter(func)
let users = [
{id: 1, name: "张睿"},
{id: 2, name: "李爽"},
{id: 3, name: "孟强"}
];
let user = users .filter((item , index , array)=>item.id>1)
console.log(user) // [ {id: 2, name: "李爽"} , {id: 3, name: "孟强"} ]
为什么返回 {id: 3, name: “孟强”}了呢?
因为 filter 返回的是所有匹配元素组成的数组
4、findIndex(func);通过func来过滤元素(几乎和find类似,不过findIndex返回的是索引,并非元素)
例如:
let users = [
{id: 1, name: "张睿"},
{id: 2, name: "李爽"},
{id: 3, name: "孟强"}
];
let user = users .findIndex((item , index , array)=>item.id>1)
console.log(user) // 1
因为 findIndex 如果它返回 true,则搜索停止,并返回 索引
四:遍历元素
forEach(func);
例如:
let users = [
{id: 1, name: "张睿"},
{id: 2, name: "李爽"},
{id: 3, name: "孟强"}
];
let user = users .forEach((item , index , array)=>{
console.log(item )
console.log(index )
console.log(array)
//{id: 1, name: "张睿"}
//0
// [{…}, {…}, {…}]
//{id: 2, name: "李爽"}
//1
//[{…}, {…}, {…}]
//{id: 3, name: "孟强"}
//2
// [{…}, {…}, {…}]
})
五:转换数组
1、map(func);根据对每个元素调用func的结果创建一个新数组
例如:
let lengths = ["张睿1", "李爽11", "孟强111"].map(item => item.length);
console.log(lengths); // [3,4,5]
2、sort(func);对数组进行排序
例如:
let arr = ["1", "3", "2","30","24"];
arr.sort((a , b) => a-b);
console.log(arr ); //["1", "2", "3", "24", "30"]
arr.sort((a , b) => b-a);
console.log(arr ); //["30", "24", "3", "2", "1"]
3、reverse();翻转数组
例如:
let arr = ["张睿", "李爽", "孟强"];
console.log(arr.reverse()) // ["孟强", "李爽", "张睿"]
4、join();将数组转换成字符串
例如:
["1", "2", "3", "4"].join(',')
//"1,2,3,4"
["1", "2", "3", "4"].join('!')
//"1!2!3!4"
与之对应的split();是将字符串转换成数组(非数组方法)
5、reduce(func, initial) —— 通过对每个元素调用 func 计算数组上的单个值,并在调用之间传递中间结果。
五:其他
Array.isArray(arr) 检查 arr 是否是一个数组。
例如:
let arr = [1,2,3,4];
let str = "";
let obj = {};
console.log(Array.isArray(arr)) // true
console.log(Array.isArray(str)) //false
console.log(Array.isArray(obj)) //false
是就返回true,否则返回false;
完!