吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1006|回复: 3
收起左侧

[讨论] JS对象结构的讨论

[复制链接]
cqwcns 发表于 2022-5-2 20:44
先上码:
[JavaScript] 纯文本查看 复制代码
    if (GET.data[0].onJob) {
      const { name, department1, department2, department3 } = GET.data[0],
        staff = { name, department1, department2, department3 };
      return { isHas: true, msg: '查询到员工', staff }
    }


以上代码,我们已经获得了一个GET.data[0]对象,里面的数据比较多,但我只要其中4个。我先解构,再创建一个对象,返回。


功能实现是没有问题,但感觉这个代码很累赘,各位有什么优化建议,有什么更好的写法,谢谢指教。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

一只小凡凡 发表于 2022-5-2 20:54
难道不是“能用就行?”😂😂
yue_tai_mei 发表于 2022-5-2 21:01
本帖最后由 yue_tai_mei 于 2022-5-2 21:02 编辑

[JavaScript] 纯文本查看 复制代码
const { name, department1, department2, department3 } = GET.data[0]
return {
  isHas: true,
  msg: '查询到员工',
  staff: {
    name,
    department1,
    department2,
    department3
  }
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 谢谢@Thanks!

查看全部评分

a90120411 发表于 2022-5-3 00:35
目前为止还没有原生方法可以支持直接从对象中提取属性来构建新对象。
只有一些其他的代替方法,可以参考 Underscore.pick 方法,或者 lodash的 pick方法。
ES6实现的Pick方法:
[JavaScript] 纯文本查看 复制代码
function pick(o, ...props) {
  return Object.assign({}, ...props.map(prop => {
    if (o[prop]) return {[prop]: o[prop]};
  }));
}

// Example:
var person = { name: 'John', age: 29 };
var myObj = pick(person, 'name', 'sex'); // { name: 'John' }


另一种使用IIFE箭头函数来实现的方法,也比较啰嗦:

[JavaScript] 纯文本查看 复制代码
staff = (({ name, department1, department2, department3}) => ({ name, department1, department2, department3 }))(GET.data[0]);

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
cqwcns + 2 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表