let persons=[
{
name:"杰克",age:18,id:5,gender:"男"
},
{
name:"李雷",age:20,id:2,gender:"男"
},
{
name:"韩梅梅",age:16,id:9,gender:"女"
},
{
name:"汤姆",age:16,id:2,gender:"男"
},
]
序号 | 需求 | 使用方法 |
---|---|---|
1 | 返回所有男生的数组 | filter |
2 | 返回所有年龄大于等于18岁的男生的数组 | filter |
3 | 只保留姓名的数组 | map |
4 | 只保留姓名和id的数组 | forEach |
5 | 判断所有人是不是都是男生 | every |
6 | 判断有没有男生 | some |
7 | 依据id进行升序排序,操作的是原数组 | sort |
基本操作说明就不写了,网上一搜一大堆,只写实际案例操作 |
// 返回所有男生的数组
let man=persons.filter((item,index)=>{
return item.gender=="男"
})
console.log("所有男生:",man)
// 返回所有年龄大于等于18岁的男生的数组
let man2=persons.filter((item,index)=>{
return item.gender=="男"&&item.age>=18
})
console.log("年龄大于等于18岁的男生:",man2)
// 在数组中找某个id的项目
let id=5
console.log(findItemFromId(id, persons))
function findItemFromId(id,list){
return list.filter(item=>{
if(item.id==id){
return item
}
})[0]
}
// { name: '杰克', age: 18, id: 5, gender: '男' }
// 只保留姓名的数组
let personNameList=persons.map((item,index)=>{
return item.name
})
console.log("只保留姓名的数组:",personNameList)
// 只保留姓名和id的数组
let personNameIdList=[];
persons.forEach((item,index)=>{
personNameIdList.push({name:item.name,id:item.id})
})
console.log("只保留姓名和id的数组:",personNameIdList)
// 判断所有人是不是都是男生
let isMan=persons.every((item,index)=>{
return item.gender=="男"
})
console.log("判断所有人是不是都是男生:",isMan)
// 判断有没有男生
let hasMan=persons.some((item,index)=>{
return item.gender=="男"
})
console.log("判断有没有男生:",hasMan)
// 依据id进行升序排序,操作的是原数组
persons.sort(function(a, b){return a.id - b.id})
console.log("依据id进行升序排序:",persons)
// 方法一: map - 给age>18的人添加字段type:'成年人'
let list = []
persons.map((item) => {
if (item.age > 18) {
list.push({ ...item, type: '成年人' })
} else {
list.push({ ...item })
}
})
console.table(list)
// 方法二:map Object.assign - 给age>18的人添加字段type:'成年人'【优雅的写法】
let obj = {type:'成年人'}
persons.map((item) => {
if (item.age > 18) {
Object.assign(item,obj)
}
})
console.table(persons)
find与filter比较,
find:如果只查到一个,返回对象;查到多个时,返回数组
filter:不管是查到几个,都返回数组
return { gender:item.gender }
return item.gender
js 最常用的几个json数组操作方法 map filter some every forEach sort(实际案例)