javascript对象转换

发布时间:2024年01月22日

把 {zhangsan: “beijing”,lisi: “shanghai”} 这样的对象转成 [{name: “zhangsan”, address: “beijing”}, {name: “lisi”, address: “shanghai”}] 这样的数组

将一个包含多个键值对的对象转换成一个由多个包含 “name” 和 “address” 属性的对象组成的数组。下面是一个相应的函数:

function transformObject(obj) {
  return Object.keys(obj).map(key => ({ name: key, address: obj[key] }));
}

// 测试
let inputObject = { zhangsan: "beijing", lisi: "shanghai" };
let outputArray = transformObject(inputObject);
console.log(outputArray);

在这个函数中,使用 Object.keys(obj) 获取对象中的所有键,然后使用 map 方法遍历这些键,构建一个新的对象数组。每个新对象包含两个属性:“name” 和 “address”,分别对应原始对象的键和对应的值。

在上面的测试中,inputObject 是你提供的对象,而 outputArray 是转换后的数组。你可以根据需要修改输入对象,然后查看转换结果。

为什么是 key => ({ name: key, address: obj[key] }) 而不是 key => { name: key, address: obj[key] }

这是因为当你在箭头函数中使用花括号 {} 时,你需要显式地使用 return 关键字来返回一个值。在这种情况下,return 是必需的。

而当你使用圆括号 () 包裹对象字面量时,JavaScript 解释器会将其视为一个表达式,而不是一个语句块。这样,你就可以省略 return 关键字,因为箭头函数隐含了返回这个表达式的意图。

下面是比较两者的写法:

  1. 使用圆括号 () 包裹对象字面量,省略了 return

    key => ({ name: key, address: obj[key] })
    
  2. 使用花括号 {},需要显式使用 return

    key => { return { name: key, address: obj[key] } }
    

在这个场景中,由于我们只是简单地创建一个新的对象字面量并返回它,使用圆括号是更为简洁的写法。

文章来源:https://blog.csdn.net/xuanyuanjiaqi/article/details/135747347
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。