练习一:
将数组元素提取转换为对象
var arr = [{label:'男',value: 1}, {label:'女',value: 0}]
实现转换后为:
obj = {'1': '男', '0': '女'}
实现方法:使用 数组.forEach方法
const arr = [{label:'男',value: 1}, {label:'女',value: 0}]
function f(arr) {
//声明一个空对象
const obj1={}
arr.forEach(item => {
//遍历数组
// 将遍历得到的每一个元素对象中的value值当做新对象的key,label的值当做新对象的值
obj1[item.value]=item.label
});
return obj1
}
const obj = f(arr);
console.log(obj)
// obj = {'1': '男', '0': '女'}
练习二:
将数组元素提取转换为一个新数组
源数组:
const arr = [{label:'男',value: 1}, {label:'女',value: 0}]
转换后:
arr2 = ['男', '女']
实现方法: 使用 数组.map方法,返回一个新数组
const arr = [{label:'男',value: 1}, {label:'女',value: 0}]
function f(arr) {
// 写代码,得到
const newArr=arr.map(item =>item.label)
return newArr
}
const arr2 = f(arr);
console.log(arr2)
// arr2 = ['男', '女']
练习三:
数组filter方法练习. 源数组为:
const data = [
{id:"01", name: "张大大", pid:"", job: "项目经理"},
{id:"02", name: "小亮", pid:"01", job: "产品leader"},
{id:"03", name: "小美", pid:"01", job: "UIleader"},
{id:"04", name: "老马", pid:"01", job: "技术leader"},
{id:"05", name: "老王", pid:"01", job: "测试leader"},
{id:"06", name: "老李", pid:"01", job: "运维leader"},
{id:"07", name: "小丽", pid:"02", job: "产品经理"},
{id:"08", name: "大光", pid:"02", job: "产品经理"},
{id:"09", name: "小高", pid:"03", job: "UI设计师"},
{id:"10", name: "小刘", pid:"04", job: "前端工程师"},
{id:"11", name: "小华", pid:"04", job: "后端工程师"},
{id:"12", name: "小李", pid:"04", job: "后端工程师"},
{id:"13", name: "小赵", pid:"05", job: "测试工程师"},
{id:"14", name: "小强", pid:"05", job: "测试工程师"},
{id:"15", name: "小涛", pid:"06", job: "运维工程师"}
]
如果A的pid == B的id,A是B的下属;如果A的pid == B的pid,A和B是同事.
需求1:找出 与 小刘 处于同一领导下的同事:
[{id:"10", name: "小刘", pid:"04", job: "前端工程师"}, {id:"11", name: "小华", pid:"04", job: "后端工程师"}, {id:"12", name: "小李", pid:"04", job: "后端工程师"}]
实现方法:
function f(data, name){
//思路:通过形参的name,找到具有和其相同pid的元素
const arrMa=data.filter(item=>item.name===name)
//取出pid
const pid=arrMa[0].pid
// 使用filter遍历数组返回pid为04的新数组
return data.filter(item=>{
return item.pid===pid
})
}
const arr = f(data, '小刘')
console.log(arr)
需求2:找出 小亮 的所有下属.
[{id:"07", name: "小丽", pid:"02", job: "产品经理"},{id:"08", name: "大光", pid:"02", job: "产品经理"}]
实现方法:
function f2(data, name){
//思路:找到具有和小亮id值相同的pid值的数组元素
const arrLiang=data.filter(item=>item.name===name)
//获取小亮id
const id=arrLiang[0].id
//返回一个pid等同小亮id的数组
return data.filter(item=>{
return item.pid===id
})
}
const arr1 = f2(data, '小亮')
console.log(arr1)
练习四:
练习对象Object的静态方法:
使用Object.values(对象名) 可以获得对象的所有值,并且返回的是一个数组
源对象为:
//源对象为:
const obj = {label:'男',value: 1,age: 18}
需求为:
arr = ['男', '1', '18']
// 所有的属性值取出来,保存在数组中
function f(obj) {
//使用Object.values(对象名)的方法获取一个数组
const newArr=Object.values(obj)
return newArr
}
const arr = f(obj);
console.log(arr)