创建数组
var arr = [1, 2, 3, 4];console.log(arr)var a = [1, "html", { "name": "cheng" }];console.log(a)
二维数组
// 二维数组 数组里面套数组var arr = [[1,2],[3,4]];//arr[数组下标][数组中数组下标]console.log(arr[0][1])//输出:2console.log(arr[1][0])//输出:3
数组长度
var arr = ["html","css","javascript"];console.log(arr.length);// length-1// 获取数组最后面的数据console.log(arr[arr.length-1]);
数组的方法
Array.isArray
该
**Array.isArray()**方法确定传递的值是否为Array。
Array.isArray([1, 2, 3]); // trueArray.isArray({foo: 123}); // falseArray.isArray('foobar'); // falseArray.isArray(undefined); // false
数组的增,删,改,查
数组的添加
push(),unshift()
特点:
- 改变数组中数据;
- 可以添加一个值,也可添加多个值;
- 不能拼接数组。
var arr = [1,2,3];arr.push(4);arr.unshift(0)console.log(arr);//输出[0,1,2,3,4]
push()在数组最后添加
var arr = [1,2,3,4];var b = [5,6,7,8];arr.push(b);console.log(arr);
unshift() 向数组前面添加
var arr = [1,2,3,4]; //[1,2,3,4,5,6,7]var b = [5,6,7,8];arr.unshift(b);console.log(arr);

concat()
concat() 方法用于连接两个或多个数组。 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。 arrayObject.concat(arrayX,arrayX,……,arrayX) arrayX:该参数可以是具体的值,也可以是数组对象
/* concat 不能改变数组结构*/var arr = [1,2,3];var c = [ 5,6,7]var b = arr.concat(c);console.log(arr);console.log(b);
数组的删除
pop(),shift()
pop() 方法用于删除并返回数组的最后一个元素。 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
/*pop --从末尾删除shift --从前面删除*/var arr = [1,2,3,4];arr.pop();arr.shift();console.log(arr)//输出:[2,3]
splice() 增删改
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组。 arrayObject.splice(index,howmany,item1,…..,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, …, itemX 可选。向数组添加的新项目。
拼接splice( index 从下标,howmany删多少个)
var arr = [1,2,3,4,5];arr.splice(2,2);console.log(arr)//输出:[1,2,5]
/* splice(index,howmany)index 从哪个下标开始howmany 删除多少个*/var arr = [1,2,3,4,5]; //[1,2,3,5];arr.splice(3,1);console.log(arr);
修改 arr[index] = num
var arr = [1,2,3,4,5]; //[1,2,7,4,5]// arr[2] = 7;// 修改splice(index,howmany,value);/*index 从哪个下标开始howmany 删除多少个value 插入的值(可以是多个值)*/arr.splice(2,1,7);console.log(arr);
增
从下标前面放值
var arr = [1,2,3,4];arr.splice(2,0,6,7)//输出[1,2,6,7,3,4] 从下标前面放值console.log(arr)
…arr
数组的展开(解构)
var arr = [1,2,3,4];console.log(arr);console.log(...arr);var a = [4,5,6];var b = [7,8,9];a.push(...b);console.log(a)//b.unshift(...a)//console.log(b)
数组的查询
slice()
查询 slice(startIndex,endIndex)不包括endIndex (startIndex<=arr[i]<endIndex) 若没有endIndex,从start到最后
var arr = [1,2,3,4];// arr[i]/* indexOf --查询数组某个值的下标*/// slice(startIndex,endIndex) 不包含endIndex/* slice(startIndex) 截取从startIndex开始到后面所有的值 */console.log(arr.indexOf(4));console.log(arr.slice(1,3))console.log(arr.slice(1))
includes()
返回Boolean值
var arr= [1,2,3,4]console.log(arr.includes(5));//false 返回Boolean值
findIndex()
对数组执行遍历,查询对应值得下标
var arr = [1,2,3,2];var index = arr.findIndex(item=>{return item == 2;})console.log(index);
filter()
只要满足某个条件,返回数组
var arr = [1,2,3,4];// var res = [];// for(var i=0;i<arr.length;i++){// if(arr[i]>2){// res.push(arr[i]);// }// }// console.log(res)var res = arr.filter(item=>item>2);console.log(res);
例子
var arr = [{name:"小米",price:1999},{name:"红米",price:999},{name:"iphone",price:9999},{name:"华为",price:3000},]/* price>1000放到一个新的数组中*/var res = arr.filter(item=>item.price>1000);console.log(res);
find()
返回满足它条件的第一个值
var arr = [1,5,3,4];var value = arr.find(item=>{return item>2;})console.log(value) //5
如果满足条件则返回那个值,如果不满足返回undfined
var arr=[1,2,3];var value=arr.find(item=>item==2);console.log(value) //2
join()
join() 方法用于把数组中的所有元素拼接成一个字符串。 元素是通过指定的分隔符进行分隔的。
/* join(seprate) 将数组拼接成字符串*/var arr = ["html","css","javascript"];console.log(arr.join());console.log(arr.join(""))console.log(arr.join("|"))console.log(arr.join(" "))

<p id="p"></p><script>var p = document.getElementById("p")var arr = [1994,"犯罪","剧情"]var str = arr.join("/")p.innerHTML = strconsole.log(str)</script>
data+join
var data = {country:"美国",year:1994,story:"犯罪"}console.log(data);//输出Object/* 美国/1994/犯罪 */var arr = []for(var i in data){console.log(i);//输出“:”前console.log(data[i]);//输出“:”后arr.push(data[i])}var str = arr.join("/");console.log(str);
sort()
sort() 方法用于对数组的元素进行排序。按照字符编码的顺序进行排序。所以只能比较单个数。 按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数: 升序算法 arr.sort((a,b)=>{ return a-b; }) 降序算法 arr.sort((a,b)=>{ return b-a })
var arr = [3,2,7,15,1];var res1 = arr.sort((a,b)=>{return a-b;})console.log(res1)var res2 = arr.sort((a,b)=>{return b-a;})console.log(res2)
例:
var students = [{name:"zhang",age:20},{name:"li",age:18},{name:"wang",age:9},{name:"chen",age:14},]/*根据年龄升序根据年龄降序*/var result = students.sort((a,b)=>{return a["age"]-b["age"]})console.log(result)
先封装再排序
<button id="like">通过好评数排序</button><button id="price">通过价格排序</button><script>var like = document.getElementById("like");var sales = [{ name: "张三", like: 60, distance: 1000, price: 10 },{ name: "张三", like: 30, distance: 100, price: 40 },{ name: "张三", like: 20, distance: 500, price: 6 },]/* 升序 */function addOrder(arr, value) {if (Array.isArray(arr)) {var res = arr.sort((a, b) => {return a[value] - b[value];})return res;}else{return null;}}like.onclick = function () {console.log(addOrder(sales, "like"))}price.onclick = function () {console.log(addOrder(sales, "price"))}</script>
数组求和
var arr = [1,2,3,4];var sum = 0;for(var i=0;i<arr.length;i++){sum = sum + arr[i]}console.log(sum)//输出10
归并求和 reduce()
var arr = [1,2,3,4];var sum = arr.reduce((a,b)=>{return a+b;})console.log(sum)//输出10console.log(arr)//不改变数组结构
取最大最小值
Math.max()
var arr = [1,2,3];console.log(Math.max(12,1,2))//输出12console.log(Math.max(...arr))//输出3
Math.min()
var arr = [4,2,6];console.log(Math.min(...arr));//输出2
forEach() 遍历数组
var arr = [2,3,4,5];arr.forEach((item,index)=>{console.log(item+" "+index)})
var…of… , map()
/* for-of for in */var arr = [1,2,3];for(var i of arr){console.log(i)}// map 可以改变数组每一个项,得到一个新的值var res = arr.map(item=>{return item*2})console.log(arr);console.log(res);
例1:
方法1
var arr = [{name:"html",value:"12px"},{name:"css",value:"13px"},{name:"vue",value:"11px"},]/*实现var res = [{name:"html",value:24},{name:"css",value:26},{name:"vue",value:22},]*/arr.map(item=>{var value = parseInt(item["value"])*2;return item["value"] = value;})console.log(arr);
方法2
var arr = [{name:"html",value:"12px"},{name:"css",value:"13px"},{name:"vue",value:"11px"},]var res = []for( var key in arr){console.log(key)console.log(arr[key])arr[key].value = parseInt(arr[key].value)*2;res.push(arr[key]);}console.log(res);
例2:
var arr = [1,2,3];/*1.数组的每一项是基础(简单)类型,执行map不会改变数组原来的结构2.数组的每一项是复杂类型{object},那么执行map方法会改变原来的数据结构*/var res = arr.map(item=>{return item*3;})console.log(res);console.log(arr);var obj = [{name:"li",age:10},{name:"zhang",age:11}];var result = obj.map(item=>{return item.age = 0;})console.log(result);console.log(obj)
some(),every()
some: 返回boolean 只要数组中有一项满足条件,就输出true every: 返回boolean 只有数组中每一项都满足条件,才输出true
var arr = [1,2,3,4];var res = arr.some(item=>{return item>2;})var b = arr.every(item=>item>2);console.log(res)//trueconsole.log(b);//false
reverse()
reverse() 方法用于颠倒数组中元素的顺序。
var arr = ["html","css","javascript"]console.log(arr.reverse()); // ["javascript","css","html"]

