双层map将对象数组中的对象转化为数组

18,478次阅读
没有评论

共计 686 个字符,预计需要花费 2 分钟才能阅读完成。

首先我们有以下这样一个 objArr 的对象数组和一个包含以上对象的属性的数组 arr


const objArr = [{
  name: 'timfan',
  age: 30,
  sex: 'male',
  website: 'http://spacexcode.com'
}, {
  name: 'Ivy',
  age: 29,
  sex: 'female',
  website: 'http://yugere.com'
}]

const arr = ['name', 'website']

我们的目标是将 objArr 这个对象数组转化为数组 arr 元素属性所对应的值得数组


// 输出
[[ 'timfan', 'http://spacexcode.com'],
  ['Ivy', 'http://yugere.com']
]

这种场景肯定遇到过,正常的做法是使用双层循环遍历键值对,往初始化的数组中插入数组元素


const outArr = []
objArr.forEach(item => {const innerArr = []
  arr.forEach(a => {innerArr.push(item[a])
  })
  outArr.push(innerArr)
})

而这里有一种巧妙的做法就是使用双层 map 直接将数组 arr 对应的属性替换为它在对象中的值得数组,代码简单逻辑性强,可能不是那么容易懂


const arrArr = objArr.map(item => arr.map(n => item[n]))
console.log(arrArr)

写了那么久的程序,越来越觉得好的代码应该尽量简洁,充分使用语言的高级语法和特性。举一反三,尝试使用不同的方法来实现程序的要求是一个程序员不断提高编码能力的必经之路。

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计686字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)