1.增加
1.push() //从尾部添加
<script>var arr = [1,2,3]/* push从数组的最后面增加一个值,可以一次性添加多个*/arr.push(4,5,6)console.log(arr) //[1,2,3,4,5,6]</script>push不能添加数组<script>var arr =[1,2,3];var obj = [4,5,6];arr.push(obj);console.log(arr) // [1, 2, 3, Array(3)]</script>解决:<script>var arr = [1, 2, 3];var obj = [4, 5, 6];/* 展开 *///console.log(...arr)arr.push(...obj)console.log(arr) //[1,2,3,4,5,6]</script>
2.unshift() //从头部添加
<script>var arr = [1,2,3]/* push从数组的最后面增加一个值,可以一次性添加多个*/arr.unshift(4,5,6)console.log(arr) //[4,5,6,1,2,3]</script>
3.concat() //拼接两个数组
<script>/*concat 拼接两个数组,但是不能改变原数组的结构*/var arr =[1,2,3];var obj = [4,5,6];arr.push(obj);var newArray = arr.concat(obj)console.log(newArray) //[1,2,3,4,5]</script>
4.splice() //定点增加
<script>/* splice(index,0,parmas) 从index的前面增加 */var skills=["html","css","jq","js"]skills.splice(0,0,"vue","react")console.log(skills) //["vue", "react", "html", "css", "jq", "js"]</script>
2.删除
1.pop() //从后面删除
<script>var arr =[1,2,3,4]arr.pop();console.log(arr) //[1,2,3]</script>
2.shift() //从前面删除
<script>var arr =[1,2,3,4]arr.shift();console.log(arr) //[2,3,4]</script>
3.splice(index,howmany) index从哪个下标开始,howmany删除多少个
<script>var app = [1,2,3,4,5,6]app.splice(2,3);console.log(app) //[1,2,6]</script>
3.修改
<script>/* splice(index,howmany,params) */var arr = ['html','css','javascript']arr.splice(1,2,"vue","react")console.log(arr) //["html", "vue", "react"]</script>
4.查询
1.indexOf()
<script>var arr = ['html','css','javascript']console.log(arr.indexOf('css')) //1</script>
2.slice()
<script>var app = [1,2,3,4,5,6,7]console.log(app.slice(1,4)) //[2, 3, 4]</script>
3.includes() 判断数组是否包含某个值
<script>var arr = ['html','css','javascript']console.log(arr.includes("javascript")) //true</script>
5.遍历
1.for循环
<script>var arr=[1,2,3,4,5]for(i=0;i<arr.length;i++){console.log(arr[i])}</script>
2.for- in
<script>var obj={name:"test",color:'red',day:'sunday',number:5}for(var value in obj){console.log(obj[value])}</script>
3.forEach
<script>var arr= ['html','css','vue','react'];arr.forEach(function(item){console.log(item)})</script>
4.for-of
<script>var arr= ['html','css','vue','react'];for(var value of arr){console.log(value)}</script>
5.map
<script>var newArray = arr.map((item)=>{return item+"1"})console.log(newArray)</script>
6.from
<script>var arr = [1,2,3,4];Array.from(arr,item=>{console.log(item)})</script>

6.其他方法
join(separator) //将数组拼接成字符串
<script>var elements = ['Fire', 'Air', 'Water'];console.log(elements.join()); //Fire,Air,Waterconsole.log(elements.join('')); //FireAirWaterconsole.log(elements.join('-')); //Fire-Air-Water</script>
sort() //排序
升序<script>var arr = [21, 12, 1, 3, 4];arr.sort((a,b)=>{return a-b;})console.log(arr) //[1,3,4,12,21]</script>降序<script>var arr = [21, 12, 1, 3, 4];arr.sort((a,b)=>{return b-a;})console.log(arr) //[21, 12, 4, 3, 1]</script>
reduce() //求和 ```javascript
//进阶 arr.reduce(function(prev,cur,index,arr){ … }, init); //arr 表示原数组; //prev 表示上一次调用回调时的返回值,或者初始值 init; //cur 表示当前正在处理的数组元素,item; //index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1; //init 表示初始值。
- reverse() //反转函数```html<script>var arr = [11,23,13];arr.reverse();console.log(arr) // [13, 23, 11]</script>
- Math.max(…arr); //获取数组最大的值
- Math.min(…arr); //获取数组最小的值
<script>var arr = [1,2,3,4];var max = Math.max(...arr);var min = Math.min(...arr);console.log(max) //4console.log(min) //1</script>
filter()
<script>var arr = [1,2,3,4,5];var newArr = arr.filter(item=>{return item>3; //返回大于3的数组})console.log(newArr) //[4, 5]</script>
entries() 方法返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。
<script>var arr =['html','css','javascript','vue']var newArr=arr.entries();console.log(newArr.next().value) //[0,'html']console.log(newArr.next().value) //[1,'css']</script>
copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
<script>var array1 = ['a', 'b', 'c', 'd', 'e'];// copy to index 0 the element at index 3console.log(array1.copyWithin(0, 3, 4));</script>
some()
- every()
find()
<script>var arr = [1,2,3,4];var num = arr.some(item=>{return item>3;})var str = arr.every(item=>{return item>1;})var value = arr.find(item=>{return item>2;})console.log(num) //trueconsole.log(str) //falseconsole.log(value) //3</script>
findIndex
var arr=[{id:001,content:"vue"},{id:002,content:"react"},{id:003,content:"small"}]var index=arr.findIndex(item=>item.id==001)console.log(index)
7.应用
//每个月份下各等级预警数量let list = [{"periodName": "LastMonth", //月份"levelWithCounts": [{"warnLevel": "0", //预警等级"count": 2}, {"warnLevel": "4","count": 6}, {"warnLevel": "3","count": 3}]},{"periodName": "LastTwoMonth","levelWithCounts": [{"warnLevel": "1","count": 10}, {"warnLevel": "2","count": 3}, {"warnLevel": "3","count": 8}]},{"periodName": "LastThreeMonth","levelWithCounts": [{"warnLevel": "0","count": 6}, {"warnLevel": "3","count": 5}, {"warnLevel": "4","count": 2}]}]//取单月下所有等级相加总数最大let maxCount = Math.max(...list.map((a) => {return a.levelWithCounts.length < 1 ? 0 : (a.levelWithCounts.reduce((pre, item) => {return pre + (item.warnLevel=='0'? 0 : item.count)}, 0))}))
//对数组或对象进行排序let listTypes = [[{name:"warningLevel",label:"预警级别",sortNum:10},{name:"zhlx",label:"灾害类型",sortNum:9},{name:"city",label:"所在市",sortNum:8},{name:"zq",label:"所在区县",sortNum:7},{name:"town",label:"所在乡镇",sortNum:6}],[{name:"jd",label:"经度",sortNum:10},{name:"wd",label:"纬度",sortNum:9},{name:"dd",label:"监测点地点",sortNum:8},{name:"wgy",label:"区域负责人",sortNum:7},{name:"fzrdh",label:"联系电话",sortNum:6}],[{name:"dlwz",label:"预警点位置",sortNum:10}]],let data = {"warningLevel": "0","warningTime": "2021-12-10 13:44:36","id": "3311230101","mc": "苏村滑坡","dlwz": "丽水市遂昌县北界镇苏村","wgy": "","jd": 119.2982726,"wd": 28.78027178,"fzrdh": "13695786238","zhlx": "滑坡","city": "丽水市","town": "北界镇苏村村","zq": "遂昌县","dd": "苏村"}listTypes[0].map(item=>{if(data.hasOwnProperty(item.name)){item.value = data[item.name]}})listTypes[1].map(item=>{if(data.hasOwnProperty(item.name)){item.value = data[item.name]}})listTypes[2].map(item=>{if(data.hasOwnProperty(item.name)){item.value = data[item.name]}})listTypes.map(item=>{item = item.sort((a,b)=> b.sortNum-a.sortNum)})
