JavaScript Array map(),有值却返回的数组里面都是undefined ??

菜鸟教程:JavaScript Array map()

JavaScript Array map()

定义和用法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

对数组里的某个属性b(数组),提取指定的值d,处理成数组,并放入了c

var list = [
    {
      "a": 1,
      "b": [{"d": "1","e":2}, {"d":"3","e":4}],
      "c": null
    },
    {
      "a": 2,
      "b": [{"d": "1","e":2}, {"d": "3","e":4}],
      "c": null
    },
  ]
list.forEach(a => {
  // console.log(a.b.map(i=>i.d))
  a.c = a.b.map(i=>i.d)
})
console.log(list);

这里就不放结果图了,直接复制放谷歌F12就能看见

实际前端业务代码是这样的,使用最“通俗易懂”的写法,2层循环

data.records.forEach(group => {
    var roleIds = []
    var roleNames = []
    group.roles.forEach(role => {
      if (role) {
        roleIds.push(role.id)
        roleNames.push(role.name)
      }
    })
    group.roleIds = roleIds
    group.roleNames = roleNames
  });

使用map(),简化后

data.records.forEach(group => {
  group.roleIds = group.roles.map(role => role.id);
  group.roleNames = group.roles.map(role => role.name);
})

美观,档次也提升了呢。

注意:map里面的function 不能有一些其他代码(=> 这里),比如加个if. 都会使程序不正确。所有必须要保证数据不为null,才能这样使用

group.roles.map(role => {if (role) role.id});// 这样就不行了,呜呜,会undefined。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值