cqwcns 发表于 2022-5-2 20:44

JS对象结构的讨论

先上码:
    if (GET.data.onJob) {
      const { name, department1, department2, department3 } = GET.data,
      staff = { name, department1, department2, department3 };
      return { isHas: true, msg: '查询到员工', staff }
    }

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


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

一只小凡凡 发表于 2022-5-2 20:54

难道不是“能用就行?”😂😂

yue_tai_mei 发表于 2022-5-2 21:01

本帖最后由 yue_tai_mei 于 2022-5-2 21:02 编辑

const { name, department1, department2, department3 } = GET.data
return {
isHas: true,
msg: '查询到员工',
staff: {
    name,
    department1,
    department2,
    department3
}
}

a90120411 发表于 2022-5-3 00:35

目前为止还没有原生方法可以支持直接从对象中提取属性来构建新对象。
只有一些其他的代替方法,可以参考 Underscore.pick 方法,或者 lodash的 pick方法。
ES6实现的Pick方法:

function pick(o, ...props) {
return Object.assign({}, ...props.map(prop => {
    if (o) return {: o};
}));
}

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


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


staff = (({ name, department1, department2, department3}) => ({ name, department1, department2, department3 }))(GET.data);

页: [1]
查看完整版本: JS对象结构的讨论