需求1:在对象中需要键名为’a’的键改为‘b’,并保持值不变
先使用 Object.keys() 方法获取对象的所有键名,Array.prototype.reduce() 方法遍历键名数组,并创建一个新的对象。
遍历过程中,使用新的键名存储旧键名对应的值,其他不需要改变的键名,直接使用原有键名存储对应的值
const obj ={
a:1,
c:2,
d:3
}const newObj = Object.keys(obj).reduce((acc,key)=>{
if(key==='a'){
acc['b'] = obj[key]
}else{
acc[key] = obj[key]
}
return acc //reduce方法需要返回值
},{}) //定义空对象,acc初始值就是对象,若定义为数组,acc初始值就是数组//新得到的newObj格式如下:
newObj={
b:1,
c:2,
d:3
}
需求2:在对象中,值为数组的需要转换为以逗号分隔的字符串
使用Object.keys() 方法获取对象的所有键名。遍历键名数组,并检查每个键的值是否是数组类型。如果是数组类型,将数组转换为字符串格式。
const obj = {key1: [1, 2, 3],key2: ['a', 'b', 'c'],key3: 'hello'
};for(let key in obj){
// 检查键的值是否是数组类型且长度要超过1(只有1项数据是不需要分割的)
if(Array.isArray(obj[key])&&obj[key].length>1){
obj[key]= obj[key].join(',')//如果需要以','分割,
//用模板字符串obj[key]= obj[key].join(`','`),就能拿到完整的','
}
}