题目:从对象中挑选指定的属性并返回新对象
let objData = {
name: '小草莓',
age: 18,
sex: '女',
hobby: ['学习']
}
let objDefault = {
name: '小草莓',
age: 18
}
/**
* 从对象中挑选指定的属性并返回新对象
* @param {Object} originObj 源对象
* @param {Array} arr 指定挑选的属性名数组,如:['name', 'text']
* @returns {Object}
*/
function pick(originObj, arr) {
if (!Array.isArray(arr)) {
return {}
}
// let res = {}
// arr.forEach(k => {
// k in originObj && (res[k] = originObj[k] || '')
// })
// return res
// return arr.reduce((init, cur) => {
// cur in originObj && (init[cur] = originObj[cur])
// return init
// }, {})
return arr.reduce((init, cur) => (cur in originObj && (init[cur] = originObj[cur]), init), {})
}
let keys = Object.keys(objDefault)
console.log('pick最后结果', pick(objData, keys))
// pick最后结果 {age: 18,name: "小草莓"}