JS数组

数组及常用的方法
数组是对象类型
ary = {
0:21,
1:23,
2:34,
3:45,
length:4
}

###常用的方法:
*方法的作用和含义
*方法的实参(类型和含义)
*方法的返回值
*原来的数组是否会发生改变

1.实现数组增删改的方法
这一部分方法都会修改原有的数组

let ary = [10,20];
let res = ary.push(30,‘AA’,{
name:‘有用’
});

//基于原生JS操作键值对,也可以向末尾追加
ary[ary.length] = 40;
console.log(res,ary)

let ary = [10,20];
let res = ary.unshift(30,‘AA’);
console.log(res,ary);

let ary = [10,20,30,40];
let res = ary.shift();
console.log(res,ary); //10 [20,30,40]

//基于原生JS中的delete,把数组当坐普通的对象,确实可以删除某一项内容,当不会影响数组本省的结构特点
(length长度不会跟着修改),真实项目不会这样删除
delete ary[0];
console.log(ary);

let ary = [10,20,30,40];
let res = ary.shift();
console.log(res,ary); //40 [20,30,40]

//基于原生JS让数组长度删掉一位,默认删掉最后一项
ary.length–;
console.log(ary);

let ary = [10,20,30,40,50,60,70,80,90];
let res = ary.splice(2,4);
console.log(res,ary) //[30,40,50,60] [10,20,70,80,90]

//基于这种方法可以清空一个数组,把原始数组中的内容以新数组存储起来
res = ary.splice(0);
console.log(res,ary) //[10,20,70,80,90] []

//删除最后一项和第一项
ary.splice(ary.length-1);
ary.splice(0,1);
console,log(ary);

//修改
let ary = [10,20,30,40,50];
let res = ary.splice(1,2,‘yyy’,‘jjj’);
console.log(res,ary); //[10,‘yyy’,‘jjj’,40,50]

//实现增加
ary.splice(3,0,‘kkk’);
console.log(ary); //[10,‘yyy’,‘jjj’,‘kkk’,40,50]

//向数组末尾追加
ary.splice(ary.length,o,‘AAA’);

//向数组开始追加
ary.splice(0,0,‘BBB’);

2.数组的查询和拼接
此数组学习的方法,原来数组不会改变

let ary = [10,20,30,40,50];
let res = ary.slice(1,3);
console.log(res); //[20,30]

//m不写是找到末尾
res = ary.slice(1);
console.log(res); //[20,30,40,50]

//数组的克隆,参数0不屑也可以
res = ary.slice(0);
console.log(res); //[10,20,30,40,50]

???思考:1.如果n/m为负数会怎样,n>m,如果是小数,非有效数字,m或n的值比最大索引
2.这种克隆方式叫做浅克隆,还有深度克隆

3.数组的拼接

let ary1 = [10,20,30];
let ary2 = [40,50,60];
let res = ary1.concat(‘yyy’,arr2);
console.log(res); // (7) [10, 20, 30, “yyy”, 40, 50, 60]

4.数组转换为字符串

let ary = [10,20,30];
let res = ary.toString();
console.log(res); // “10,20,30”
console.log([].toString()); //""

let ary = [10,20,30];
let res = ary.join(’’);
console.log(res); //“102030”

let ary = [10,20,30];
let res = ary.join(’|’);
console.log(res); //“10|20|30”

let ary = [10,20,30];
let res = ary.join();
console.log(res); //“10,20,30”

let ary = [10,20,30];
let res = ary.join(’+’);
console.log(res); //“10+20+30”

let ary = [10,20,30];
let res = ary.join(’+’);
console.log(eval(res)); //60 eval把字符串变为JS表达式执行

5.检测数组中的是否包含某一项

let ary = [10,20,30,10,20,30];
console.log(ary.indexOf(20)); //1
console.log(ary.lastIndexOf(20)); //4

//想验证ary中是否包含’yyy’
if(ary.indexOf(‘yyy’)===-1){
//不包含
}
//也可以使用ES6新提供的includes方法判断
console.log(ary.includes(‘yyy’)){
//包含:如果存在返回的是true
};

6.数组的排序或者排列

let ary = [12,15,9,28,10,22];
ary.reverse();
console.log(ary); //[22, 10, 28, 9, 15, 12]

let ary = [7,8,3,2,4];
ary.sort();
console.log(ary); //[2,3,4,7,8]

//sort方法中如果不传递参数,是无法处理10以上数字排序的(它默认按照每一项第一个字符来【来排,不是我们想要的结果)
let ary = [10,22,15,9];
ary.sort();
console.log(ary); //[10, 15, 22, 9]

let ary = [10,22,15,9];
//ary.sort(function(a,b){…})
ary.sort((a,b)=>a-b);
console.log(ary);

7.遍历数组中每一项的方法

let ary = [12,15,9,28,10,22];
//基于原生JS的循环
for(let i = 0;i<ary.length;i++){
console.log(‘索引’+i+‘内容’+ary[i])
}

ary.forEach((item,index)=>{
//数组中有多少想,函数就会被默认执行多少次
//每一次执行函数:item是数组中当前要操作的这一项,index是当前项的索引
console.log(‘索引’+index+‘内容’+item)
})

8.数组去重

function unique(ary){
let obj = {};
for(let i = 0;i<ary.length;i++){
let item = ary[i];
if(obj[item]!==undefined){
ary[i]=ary[ary.length-1];
ary.length–;
i–;
continue;
}
obj[item] = item;
}
return ary;
}
//给aa去重
let aa = [12,15,9,28,10,22];
aa = unique(aa);
//升序
aa.sort((a,b)=>a-b);

查看数组中的方法:Array.prototype,去MDN网站查用法

forEach
map
filter
find
reduce
some
every

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值