javascript - 对象解构 - 如何以更短的方式重写此函数?

标签 javascript node.js ecmascript-6 babeljs

我正在使用 babel 和 ES6,我想知道是否可以用更短的方式编写以下代码,特别是我不喜欢在 return 语句中手动重新映射 pf 属性。

  const locations = action.payload.list.map(location => {
    return {
      id: location.id,
      name: location.name,
      country: location.sys.country
    }
  })

最佳答案

您可以利用对象解构在迭代时从当前对象获取 "id""name""sys" 属性。由于我们要从 "sys" 对象获取 "country" 属性,因此我们对 "sys" 属性执行额外的解构以获取 "country" 属性,语法为 propertyNameOfObjectReference:{propertyNameOfNestedObjectToGet};请注意下一个大括号 { 之前的冒号 :,其中 propertyNameOfNestedObjectToGet 被对象文字大括号 {} 包围。

另请注意,“name” 的值是 stacksnippets 中的字符串,其中应该是数字;在某些环境中,name 可以全局定义为字符串 window.name。为了防止可能出现的值类型转换问题,您可以在解构时将 "name" 属性设置为 name 以外的变量名称,然后在返回的对象中将属性设置为 "name"

const action = {payload:{list:[{name:123,id:456,sys:{country:789}}]}};

const locations = action.payload.list.map(({id, name:_name, sys:{country}}) =>
                    ({id, name:_name, country}));
   
console.log(locations);

关于javascript - 对象解构 - 如何以更短的方式重写此函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43427730/

相关文章:

Javascript filter() 返回所有数据。不过滤匹配项

javascript - 如何获取使用 `push` 添加到 Firebase 的新帖子的 id?

javascript - NodeJS 后台作业从不执行,永远循环

javascript - Webpack-merge 不访问公共(public)配置变量

node.js - Nodejs应用程序docker无法连接到mongodb docker容器

node.js - 将 Meteor 项目从 1.5.2.2 更新到 1.6 时出错

javascript - ES6 类中的 constr.apply(this, args)

javascript - ES7 Map JSON 添加方括号

javascript - Dust.js 模板不遵守条件存在

javascript - Chrome 开发者工具控制台 - 日志堆叠,如何查看重新记录的内容 [内部屏幕截图]?