💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 数组 ## 数组是一组数据的集合,可以将更多的数据存储在单个变量下。微信小程序中的数组定义和PHP语言类似 ## **1.数组的定义** 在微信小程序中可以使用两种方式进行数组的定义 ``` // 数组的定义方法1 var lsit =new Array(); lsit[0] = "微信小程序"; lsit[1] = "Html"; // 数组的定义方法2 var lsit = [ "微信小程序", "Html"]; ``` ## **2.获取数组的元素** ``` console.log(lsit[0]); ``` ## **3.数组的求和** ``` var sum = [1,2,3] var sum2 = 0; for(var i=0;i<sum.length;i++){ sum2+=sum[i]; } console.log(sum2) ``` ## **4.获取数组元素的最大值** ``` var arr = [12,65,34,89,45]; var num = arr[0]; for(var i=1;i<arr.length;i++) { if(num<arr[i]) { num=arr[i]; } } console.log(num); ``` ## **5.数组添加元素** 给数组添加函数使用push()函数 ``` var lsit = [ { name:"张三",number:2001}, { name:"李四",number:2002}, { name:"王五",number:2003}, { name:"周六",number:2004}, { name:"吴七",number:2005}, ] lsit.push({name:"刘八",number:2003}) ``` ## **6.判断一个对象是不是数组** 判断一个对象是不是数组的两种方式 * 1. 通过instanceof Array * 2. 通过Array.isArray()方法 ``` var arr = new Array() console.log(arr instanceof Array); //true console.log(Array.isArray(arr)); //true ``` ## **7.添加和删除数组元素** * **push()** 方法在数组的末尾添加一个或多个元素 * **unshift()** 方法在数组的开头添加一个或多个元素 * **pop()** 方法删除数组尾部的元素,一次只能删除一个 * **shift()** 删除数组最前面的元素 ``` //添加和删除数组元素 var arr =  [ { title:"新闻标题1",desc:"新闻描述1"}, { title:"新闻标题2",desc:"新闻描述2"}, ]; arr.push( { title:"新闻标题3",desc:"新闻描述3"}, { title:"新闻标题4",desc:"新闻描述4"} ); arr.unshift( { title:"新闻标题",desc:"新闻描述"}, { title:"新闻标题0",desc:"新闻描述0"}, ); arr.pop(); arr.shift(); ``` ``` //筛选出不及格的分数 var arr =  [20,59,40,80,99,98]; var newArr = []; for(var i=0;i<arr.length;i++) { if(arr\[i] <60) { continue } newArr.push(arr\[i\]); } console.log(newArr) ``` ## **8.reverse方法翻转数组** reverse()方法将数组中的元素位置颠倒,并返回一个**新的**数组。 ``` var arr = [20,59,40,80,99,98]; console.log(arr.reverse()) // [98, 99, 80, 40, 59, 20] ``` ## **9.sort方法对数组进行排序** **sort()**方法用[原地算法](https://en.wikipedia.org/wiki/In-place_algorithm)对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为 **字符串**,然后比较它们的UTF-16代码单元值序列时构建的,所有当使用sort()进行排序存在问题 ``` var arr = [20,59,40,80,99,98,6]; arr.sort() console.log(36>6)    //true console.log('36'>'6')//false console.log(arr) //[20, 40, 59, 6, 80, 98, 99] ``` 在上面的实例中为什么会出现6排在59和80之间呢?因为sort默认排序是将元素转换为字符串,然后对字符串进行比较,再排序的。而字符串的比较规则会根据第一个不同的字符的ascii值码进行比;所有需要使用下面的固定写法 ``` //添加和删除数组元素 var arr = [20,59,40,80,99,98,6]; //按照升序排列 arr.sort(function(a,b){ return a - b }) //按照降序排列 arr.sort(function(a,b){ return b - a }) ``` ## **10.数组去重** 数组的索引:indexOf()方法,返回在数组可以找到一个给定元素的第一个索引,如果不存在返回 -1 lastIndexOf()返回指定元素在数组中的最后一个索引,如果不存在则返回 -1 ``` //数组去重 var arr = [2,9,6,2,6,5]; var newArr = newArray(); for(var i=0; i<arr.length; i++) { if(newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]) } } console.log(newArr) //[2, 9, 6, 5] ``` ## **11.把数组转换为字符串** * toString()将数组通过逗号连接成一个字符串 * join(分隔符) 将数组通过分隔符连接成一个字符串。没有参数则默认是逗号 ``` var arr = [2,9,6,2,6,5]; console.log(arr.toString());//=>2,9,6,2,6,5 console.log(arr.join('-')); //=>2-9-6-2-6-5 ``` ## **12.数组的其他常用方法** * concat() 用于合并两个或多个数组,该方法不会更改现有数组,而是返回一个新的数组 * slice()截取数组的一部分返回一个新数组对象,这一对象是由begin和end决定的原数组的浅拷贝(包括begin不包括end)。原数组不会被改变 * splice()通过删除或者替换现有元素或者原地添加新元素来修改或删除数组splice(从第几个开始,删除几个) ``` var arr = [1,2,3,4,5]; arr.splice(0,2) //从索引为0的地方开始,删除2个元素 console.log(arr) //[3, 4, 5] ``` ``` var arr = ['a','b','c','d','e']; arr.splice(0,2,"A","B") //从索引为0的地方开始,替换2个元素 console.log(arr) //["A", "B", "c", "d", "e"] ```