数组/对象 常用方法练习

练习一:

将数组元素提取转换为对象

  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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值