JS 这几句能连一起写吗?

2022 年 7 月 21 日
 coolair
const {a, b, c, d, e, f, g, h} = anObject

let newObject = {a, b, c, d, e, f, g, h}

callFunc({...newObject})

因为 a, b, c, d, e, f, g, h 这几个变量很长,有没有好的写法?

2835 次点击
所在节点    问与答
17 条回复
yunying
2022 年 7 月 21 日
callFunc({... anObject})
coolair
2022 年 7 月 21 日
@yunying anObject 还有其他属性不需要的
murmur
2022 年 7 月 21 日
const {
aaaaaaaaaaaaaaaaaaaaaaa,
bbbbbbbbbbbbbbbbbbbbbb,
ccccccccccccccccccccccccccc,
dddddddddddddddddddddd
} = anObject
mxT52CRuqR6o5
2022 年 7 月 21 日
原生 js (感觉怎么样都要写很多)
callFunc(Object.fromEntries(Object.entries(anObject).filter(([key])=>['a','b','c','d','e','f','g','h'].includes(key))))

lodash 之类的工具库
callFunc(_.pick(anObject,['a','b','c','d','e','f','g','h']))
dumbass
2022 年 7 月 21 日
@coolair #2 那就用别名吧
```js
const { veryLongVariable: a, ... } = obj
```
yunying
2022 年 7 月 21 日
@coolair 看下 loadash 有没有用得上的函数吧。
acthtml
2022 年 7 月 21 日
lodash pick function

const newObj = _.pick(obj, [keyA, keyB])
Liam1997
2022 年 7 月 21 日
lodash pick
rrfeng
2022 年 7 月 21 日
可以反过来写,把不要的列出来?
shyling
2022 年 7 月 21 日
没懂意思。。。一般来说 callFunc 不怕 object 多参数的吧?
Vegetable
2022 年 7 月 21 日
你参数是一个 obj ,他参数多就多呗。你这么写也做不到 deepcopy ,...都多余
libook
2022 年 7 月 21 日
换行写就行,挺清晰的。

因为 git 是按行检查的,所以为了在增删改选取属性时能让 git 记录精确一些,我习惯在这种情况下换行写,如:

const {
a,
b,
} = anObject;

如果想加个 c 只需要加一行,git 提交记录只会显示添加了一行 c ,不会显示整行有修改,这样更清晰一些。
Vegetable
2022 年 7 月 21 日
*属性
lneoi
2022 年 7 月 21 日
有种不太好看的写法,如果 anObject 中不需要的元素比较少,比如 f 后面只有 x,y 两个不要,可以写 const { x, y, ...newObject } = anObject
然后取 newObject ,xy 没用到会有提示,用了什么数据也不明确。
FrankFang128
2022 年 7 月 21 日
lodash.pick(
PrtScScrLk
2022 年 7 月 21 日
说一个 pick 的反向操作 omit , 从对象里去掉一些属性,比直接 delete 好用点儿。
aleen42
2022 年 7 月 22 日

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/867700

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX