背景:在实际工作中经常需要对数组进行一些处理,这里主要列举一些常用方法及使用场景。
1.数组的拼接方法 concat() , 用于连接两个或多个数组 ,不改变原有数组,会返回一个新数组
let arr = [
{
name:'a组',
id:1
},
{
name:'b组',
id:2
}
]
let addItem = [
{
name:'全部',
id:0
}
]
//应用场景:需要在下拉筛选器增加一个全部选项,全部要在第一个选项,这时候后端不给改,前端可以用concat来处理
arr = addItem.concat(arr)
console.log(arr); // [{name:'全部',id:0},{name:'a组',id:1},{name:'b组',id:2}]
2.数组的查找元素方法 find(),用于返回数组中符合条件的第一个元素,否则返回undefined
let arr = [
{
name:'a组',
id:1
},
{
name:'b组',
id:2
}
]
let param = 'a组'
//应用场景:知道一个数组的元素对象单个属性值,想要取出完整的元素对象
let obj = arr.find(item => {
return item.name = param
})
console.log(obj); //{name: "a组", id: 1}
3.数组判断是否含有子元素的方法indexOf() , 如果含有子元素,返回下标值,没找到则返回-1
let arr = ['apple','pear','orange']
//应用场景:判定数组中是否含有元素,及元素所在的位置
console.log(arr.indexOf('apple')) //0
console.log(arr.indexOf('pear')) //1
console.log(arr.indexOf('orange')) //2
console.log(arr.indexOf('banana')) //不存在返回-1
4.判断数组中是否存在某个对象的方法some(),如果有一个元素满足条件,则返回true,剩余的元素不会再进行检测,如果都不满足,则返回false
let arr = [
{
name: 'a组',
id: 1
},
{
name: 'b组',
id: 2
},
{
name: 'c组',
id:3
}
]
//应用场景:判定数组中是否存在某个对象元素
let res = arr.some(item => item.name == 'a组')
console.log(res); //true
5.给数组增/删 首项 unshift/shift(), 这两个方法是直接修改原有的数组
let arr = [
{
name: 'a组',
id: 1
},
{
name: 'b组',
id: 2
},
{
name: 'c组',
id:3
}
]
let elseItem = { name:'额外组', id:0 }
arr.unshift(elseItem)
console.log(arr); // [{ name:'额外组', id:0 },{name: 'a组',id: 1},{name: 'b组',id: 2},{name: 'c组',id:3}]
arr.shift(elseItem)
console.log(arr);// [{name: 'a组',id: 1},{name: 'b组',id: 2},{name: 'c组',id:3}]
5.遍历数组赋值成对象并push到新数组中(不改变原数组)
let list = ['750', '1080', '1125', '1242', '1242'],
let data = []
Object.keys(list).forEach(key => {
let item = {
val: list[key]
}
data.push(item)
})
打印结果:[ { val: ‘750’ }, { val: ‘1080’ }, { val: ‘1125’ }, { val: ‘1242’ }, { val: ‘1242’ } ]