js 对象中替换键名,值不变;对象中键的值是数组,将数组转换为字段串格式

需求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(`','`),就能拿到完整的','
}
}

你可能感兴趣的:(javascript,前端,开发语言)