目录
如何创建一个数组
- new Array()
- Array.of()
//标准的定义
let arr=new Array("dxy",1,2,3);
//推荐使用
let arr=["dxy",1,2,3];//数组是一个对象,引用类型。
- 数据创建的细节
若要添加6
这个元素
let arr=new Array(6);// 会创建6个空元素
let arr=Array.of(6);//可以将6这个元素加进去
数组的类型转换与检测
- isArray()
//1.检测
Array.isArray();
//2.转换
let str=[1,2,3].toString();
let str=.String([1,2,3]);
let str=[1,2,3].join(" |");//用连接符将其转换成字符串
console.log(location.herf+"?id" + str);
// 其他类型转换为数组
let str="hhhxxxkkk"
str.split(",");
Array.from(str);//有length属性的元素可以由from转换为 数组
let obj={
name:"dxy",
age:18,
length:2 //必须加length才可使用
}
console.log(Array.from(obj));
解构赋值及三点运算符(展开语法)
注意:
...args用作传参,则吸星大法,吸收所有的参数值
若为赋值,则 表示将数组中的元素拿出来展开
//给一个对象或者数组直接赋值
let arr=["dxy",18]
//let name=arr[0];
//let age=arr[1];
let[name,age]=arr;
console.log(name,age);
//必须加声明
let [name,age]=["dxy",18];
console.log(name,age);
//只想给age赋值
let [,age]=["dxy",18];
//...args用作传参,则吸星大法,吸收所有的参数值
//若为赋值,则 表示将数组中的元素拿出来,展开
// let [name,...args]=["dxy",18,'gaosan',34];
// console.log(args);
// let a=['zsh',...args];
// console.log(a);
//解构将值平均分给所定义的对象
let [name,age=18]=["dxy"];
console.log(age);
数据出栈入栈操作
- push() // 向后追加
- pop () // 从后弹出
- -unshift () // 向前追加
- shift() // 从前边弹出
- fill()
console.log([1,2,3].fill('dxy',1));//从第一个位置添加
splice与slice实现数组的增删改查
注意:slice不会改变原数组
splice会改变原数组
let ar=[d,c,b];
let var=arr.slice(1,2);//得到一个新数组从第一个数组开始截取2个
let arr=[1,2,3,4,5];
arr.splice(2,1); //从下标2开始 删除一个
console.log(arr);
arr.splice(3,0,'dxy');//从中间下标为3的位置增加
arr.splice(arr.length,0,7);//末尾增加 从最后一个位置开始,不删除任何东西,增加7
console.log(arr);
arr.splice(0,3,"dxy","zsh");//替换 0-3替换为 dxy,zsh
console.log(arr);
- 实战将一个数组中的元素从第一个位置移动到第三个位置
function move(array,from,to){
if(from<0||to >=arry.length){
console.log("参数错误")
return ;
}
let newArray=[...array];
let item=newArray.splice(from,1);
newArray.splice(to,0,...item);
return newArray;
}
let array=[1,2,3,4,5];
console.log(move(array,1,3))
清空数组的多种操作
let arr=[1,2,3,4];
arr=[];
let arr1=arr; //浅拷贝
arr.length=0; //深拷贝
arr.splice(0,hd.length);
while(arr.pop()){}
拆分和合并
- split()
- join()
- concat()
- 三点运算符
- 复制元素copyWithin
let str="dxy,hhh";
let str1=str.split(",");
console.log(str1);
let str2=str1.join("-");
console.log(str2);
let arr=[1,2,3,4,5];
let arr2=["dxy","beauty"];
let add=["w","c"]
let arr3=arr2.concat(arr,add);
console.log(arr3);
arr=[...arr,...arr2];
console.log(arr)
//复制
arr.copyWithin(2,0,2) //复制到第二个位置,从0开始,到2结束 复制下标为0 ,1 的元素
console.log(arr);
数组的查找
- indexOf(左) 返回下标
- lastIndexOf(右侧)返回-1 表示没找到
if (arr.indexOf(2)!=-1){
console.log("找到了");
}
- includes 返回ture or false
- find 返回找到的值
- findIndex 返回索引的位置
includes方法的实现原理
function includes(array,find){
for(let value of array){
if(value == find) return true;
}
return false;
}
let arr=[1,2,3,4,8];
console.log(includes(arr,1))
find与findIndex新增方法
循环操作方法
- forEach
- iterator
every与some
filter 过滤元素的使用
let lesson=[
{title:"xxxx",category:"css"},
{title:"xxxx",category:"css"},
{title:"xxxx",category:"js"},
]
let cssLesson=lesson,filter(function(lesson){
return lesson["category"]="css";
})
console.log("cssLesson");
map and set
map不改变原数组
let arr=['hdcms','hhh'];
let arr1=arr.map(function(value,index,arr){
value=`sss-${arr1}`
})
reduce方法
map和foreach遍历数组的区别
可参考了解更多
数组去重的方法
可参考https://blog.csdn.net/jiangwei1994/article/details/82992985
Array.from的用法
- 不会改变原来数组的有
返回新数组
:
concat()—连接两个或更多的数组,并返回结果。
every()—检测数组元素的每个元素是否都符合条件。
some()—检测数组元素中是否有元素符合指定条件。
filter()—检测数组元素,并返回符合条件所有元素的数组。
indexOf()—搜索数组中的元素,并返回它所在的位置。
join()—把数组的所有元素放入一个字符串。
toString()—把数组转换为字符串,并返回结果。
lastIndexOf()—返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
map()—通过指定函数处理数组的每个元素,并返回处理后的数组。
slice()—选取数组的的一部分,并返回一个新数组。
valueOf()—返回数组对象的原始值。
- 会改变原来数组的有
在原数组上操作
:
pop()—删除数组的最后一个元素并返回删除的元素。
push()—向数组的末尾添加一个或更多元素,并返回新的长度。
shift()—删除并返回数组的第一个元素。
unshift()—向数组的开头添加一个或更多元素,并返回新的长度。
reverse()—反转数组的元素顺序。
sort()—对数组的元素进行排序。
splice()—用于插入、删除或替换数组的元素。
持续更新中