⼩程序——数组操作(增加删除修改遍历)map、filter、forEach、find的。
。。
⼀、数组的操作
Array.push() ->在数组后⾯继续插⼊内容
Array.pop() ->拿⾛数组最后⼀个内容
Array…shift()->拿⾛数组的第⼀个内容 (unshift也是拿⾛最后⼀个)
Array.sort()->对数组从⼩到⼤排列**
Array.splice(起始位置 , 位数,”增添内容”)->从数组中取出以起始位置开始的位数的内容,并写⼊增添内容,可⽤来删除内容与替换,例如people.aplice(1,2,“name”)
0、原数组为(以下的操作都是对原数组进⾏操作):
list:[{
name:"你好",
status:true,
},{
name:"朋友",
status:false,
}],
1、修改数组⾥某⼀项的值
// 1、修改数组⾥某⼀项的值
this.data.list[0].name ='修改了内容';
this.setData({
list:this.data.list
});
console.log(this.data.list)
// 2、修改数组⾥某⼀项的值
this.setData({
[`list[${index}].name `]:'修改了内容',//这⾥的index是数组下标
});
2、删除某条数据
this.data.list 是原来的数组
// 2、删除某条数据
//通过`index`识别要删除第⼏条数据,第⼆个数据为要删除的项⽬数量,通常为1,
//splice(1, 1)表⽰是从第⼆条数据开始删除,删除⼀条
this.data.list.splice(1,1);
//渲染数据
this.setData({
list:this.data.list
});
console.log(this.data.list)
3、清空数组
//3、清空数组,其实就是让数组变成⼀个空数组即可
this.setData({
list:{}
});
4、向前插⼊数组
// 4、向前插⼊数组
//要增加的数组
var newarray =[{
id:6,
name:'向前增加数据--',
count:89
}];
//使⽤concat()来把两个数组合拼起来
this.data.list = at(this.data.list);
console.log(this.data.list)
使⽤三点扩展运算符
var arr1 =['a','b'];
var arr2 =['c'];
console.log([...arr2,...arr1])
5、向后插⼊数组
// 5、向后插⼊数组
//要增加的数组
var newarray =[{
id:7,
name:'向后增加数据--',
count:89
}];
//使⽤concat()来把两个数组合拼起来
this.data.list =this.at(newarray);
console.log(this.data.list)
6、数组赋值
1、初始化由参数控制长度的数组
const array =Array(5).fill('1')
//输出 ['1','1','1','1','1',]
2、如果是普通的赋值arr1=arr2,如果arr2改变,arr1也会跟着改变,使⽤下⾯的赋值就不会({}对象也⼀样)const arr1=[...arr2]
⼆、map、filter、forEach、find的⽤法
1、map
经过在浏览器上的测试,forEach()的执⾏速度⽐map()慢了70%。map是会有返回的数组,⽽forEach没有。例⼦1:
A、使⽤map将每⼀个元素乘以2,然后筛选出那些⼤于5的元素。最终结果赋值给arr2。
// 把数组全部都乘以2,然后选出⼤于5的
let arr =[1,2,3,4,5];
let arr2 = arr.map(num => num *2).filter(num => num >5);
//输出 arr2为: [6, 8, 10]
B、如果只是要3乘以2,需要这样写
let arr =[1,2,3,4,5];
let arr2 = arr.map(num =>
if(num  ==3){
return num *2;
}
return num ;
C、如果要知道遍历到第⼏个了,可以这样写:
arr.map((num,index)=> num *2);
index就是第⼏个
D、处理服务端返回的数据(有name、sex、gener、number等等),只需要部分字段,可以这样写:
let r = res.map(item =>{
return{
title: item.name,
sex: item.sex ===1?'男':item.sex ===0?'⼥':'保密',
age: item.age,
avatar: item.img
}
})
例⼦2:
var arr =[1,2,2].map(()=>"aaa")filter过滤对象数组
console.log(arr)
输出结果为:
例⼦3:
var arr =["A","K","Q","J","10"].map(p =>["♠", p])
console.log(arr)
输出结果为:
2、filter
var persons =[
{name:"⼩王",type:"boy",city:"⼴西",age:15,height:170},
{name:"⼩美",type:"girl",city:"北京",age:16,height:180},
{name:"⼩⾼",type:"girl",city:"湖南",age:18,height:175},
{name:"⼩刘",type:"boy",city:"河北",age:20,height:177}
]
var filterNum = persons.filter(function(person,index,arrs){
pe==="boy"&& person.age >17&& person.height<180
});
console.log(filterNum)//{name:"⼩刘",type:"boy",city:"河北",age:20,height:177}
过滤之后如果都不满⾜条件,会返回 [],需要⽤长度来判断是否有满⾜的条件
3、find
特点:到第⼀个符合条件之后,就不会往后了,这与filter过滤是不⼀样的,find⽅法⽐较快速便捷
var persons =[
{name:"⼩王",type:"boy",city:"⼴西",age:15,height:170},
{name:"⼩美",type:"girl",city:"北京",age:16,height:180},
{name:"⼩⾼",type:"girl",city:"湖南",age:18,height:175},
{name:"⼩刘",type:"boy",city:"河北",age:20,height:177}
]
var filterNum = persons.find(function(person,index,arrs){
pe==="boy"
});
console.log(filterNum)// {name:"⼩王",type:"boy",city:"⼴西",age:15,height:170}
如果都没有满⾜条件的,就返回undefined
注意:这⾥不可以使⽤includes,因为“boy"是最对象{}⾥
4、forEach
能⽤forEach的,就可以使⽤map,⼀般⽐较少⽤forEach,不是到迫不得已都不⽤
map、filter实战
const app =getApp()
Page({
data:{
cellList:[{
cells:[{
num:1,
cellNum:[{
machineCode:"755000017"
},{
machineCode:"755000020"
}]
},{
num:2,
cellNum:[{
machineCode:"755000027"
},{
machineCode:"755000019"
},{
machineCode:"755000054"
}]
}]
},{
cells:[{
num:3,
cellNum:[{
machineCode:"755000027"
},{},{}]
}]
},{
cells:[{
num:4,
cellNum:[{}]
}]
}],
// 第⼆组
testArr:[{
machineCode:"755000017"
},{
machineCode:"755000023"
}]
},
onLoad(){
console.log("原始的⼆维数组为==",llList)
// this.filterData()
this.filterData2()
console.log("原始的⼆维数组为==(问题:llList会跟着变)",llList)
},
// 过滤数组,num全部+1
filterData(){
var arr =llList.map(item =>{
// var cellsArr = lls
var arr1 = lls.map(item2 =>{
item2.num +=2
return item2
// console.log("num", item2.num - 1)
})
// console.log("arr1", arr1)
return item
})
console.log("arr==", arr)
},
// 过滤数组,cellList⾥⾯的machineCode如果在第⼆个数组testArr⾥⾯的话就保留,不在的那些就清掉filterData2(){
var arr =llList.map(item =>{
var arr1 = lls.map(cellsItem =>{
const devicesCell = llNum.filter(cellNumItem =>{
const devices =stArr.filter(testArrItem =>{
return testArrItem.machineCode === cellNumItem.machineCode
})
return devices.length !="0"
})
return cellsItem
})
return item
})
console.log("arr==", arr)
}
})
三、数组排列
1、从⼩到⼤排列
Array.sort()->对数组从⼩到⼤排列**
2、数组⾥⾯的对象按 从⼩到⼤排列

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。