11-js数组(ESMAScript)
数组
数组是一种特殊的对象。里面可以放基本类型数据也可以放对象
let arr=new Array("a","b","c");
console.log(arr[1])//输出b
一、通过下标访问数组
除了直接访问还可以使用at,at的参数为负数时表示从后往前数。(直接访问下标不能为负数)
let arr=new Array("a","b","c","d","e","f");
// 常见访问方式
console.log(arr[1])//输出b
// at访问
console.log(arr.at(-1))//输出f
二、新增或删除数组元素
2.1.push尾部新增元素
2.2.pop尾部删除元素
2.3.unshift头部新增元素
2.4.shift头部删除元素
let arr=new Array("a","b","c","d","e","f");
// push
arr.push("1")
console.log(arr)//输出['a', 'b', 'c', 'd', 'e', 'f', '1']
// pop
arr.pop()
console.log(arr)//输出['a', 'b', 'c', 'd', 'e', 'f']
// unshift
arr.unshift("1","2")
console.log(arr)//输出['1', '2', 'a', 'b', 'c', 'd', 'e', 'f']
// shift
arr.shift()
console.log(arr)//输出['2', 'a', 'b', 'c', 'd', 'e', 'f']
2.5.splice可增删替换元素(会修改原数组)
let arr=new Array("a","b","c","d","e","f");
// 参数一:从什么位置开始操作元素
// 参数二:删除元素的个数
// 参数三:新增的元素// 删除
arr.splice(1,2)
console.log(arr)//输出['a', 'd', 'e', 'f']
// 新增
arr.splice(1,0,"1","2")
console.log(arr)//输出['a', '1', '2', 'd', 'e', 'f']
// 替换(也就是删除后新增)
arr.splice(1,1,"6")
console.log(arr)//输出['a', '6', '2', 'd', 'e', 'f']
三、截断
可以通过设置length截断数组
let arr=["a","b","c","d","e","f"];
arr.length=1;
console.log(arr)//输出['a']
因此如果要清空数组可以设置对应的length=0
四、遍历(3种for的使用)
let arr=["a","b","c","d","e","f"];
// 1.for
for(let i=0; i<arr.length;i++){console.log(arr[i])
}
// 2.for...in
for(let index in arr){console.log(index,arr[index])
}
// 3.for...of
for(let item of arr){console.log(item)
}
五、截取slice(不修改原数组)
let arr=new Array("a","b","c","d","e","f");
// 参数一:start,开始位置
// 参数二:end,结束位置,不包括endlet foo=arr.slice(1,3)
console.log(foo)//输出['b', 'c']
六、合并
6.1.push(修改原数组)
直接使用push是将整个数组作为一个元素存入,使用es6语法...可存入数组里的元素
let arr1=["a","b","c"];
let arr2=["1","2","3"];
arr1.push(arr2)
console.log(arr1)//输出['a', 'b', 'c', ["1","2","3"]]
let arr1=["a","b","c"];
let arr2=["1","2","3"];
arr1.push(...arr2)
console.log(arr1)//输出['a', 'b', 'c', '1', '2', '3']
6.2.concat(不修改原数组)
用法和之前的字符串类似
let arr1=["a","b","c"];
let arr2=["1","2","3"];
let arr3=["?","#","%"];
let arr4=arr1.concat(arr2,arr3);
console.log(arr4)//输出['a', 'b', 'c', '1', '2', '3', '?', '#', '%']
6.3.join
let arr1=["a","b","c"];
console.log(arr1.join("-"))//输出a-b-c
七、查找
7.1.indexOf(基本类型查下标)
let arr1=["a","b","c"];
console.log(arr1.indexOf("b"))//输出1
7.2.includes(判断是否存在某基本类型元素)
let arr=["a","b","c","d","e","f","g","h"];
console.log(arr.includes("a"))//输出true
7.3.find(可查对象)
find是高阶函数

获取对应元素,该示例为获取名为张三的元素
let arr=[{name:"张三",age:18},{name:"李四",age:1},{name:"王五",age:25},
];let person=arr.find((item)=>{return item.name==='张三';
})
console.log(person);

7.4.findIndex(查对象中符合条件的下标)
let arr=[{name:"张三",age:18},{name:"李四",age:1},{name:"王五",age:25},
];console.log(arr.findIndex((item)=>item.age===18));//输出0
八、排序
8.1.sort
8.1.1.给数字排序
let arr=[50,8,6,85,15,46,2];
arr.sort((a,b)=> a-b);//从低到高排
console.log(arr)//输出[2, 6, 8, 15, 46, 50, 85]
arr.sort((a,b)=> b-a);//从高到低排
console.log(arr)//输出[85, 50, 46, 15, 8, 6, 2]
8.1.2.给对象排序
这个示例是按对象的id排序
let arr=[{id:666,name:"张三",age:18},{id:664,name:"李四",age:1},{id:665,name:"王五",age:25},
];
arr.sort((item1,item2)=>item1.id -item2.id);
console.log(arr)

8.2.reverse
reverse把数组倒过来
let arr=[50,8,6,85,15,46,2];
arr.reverse()
console.log(arr)//输出[2, 46, 15, 85, 6, 8, 50]
