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