JS 这几句能连一起写吗?

2022-07-21 10:37:00 +08:00
 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 这几个变量很长,有没有好的写法?

1908 次点击
所在节点    问与答
17 条回复
yunying
2022-07-21 10:38:22 +08:00
callFunc({... anObject})
coolair
2022-07-21 10:39:28 +08:00
@yunying anObject 还有其他属性不需要的
murmur
2022-07-21 10:40:10 +08:00
const {
aaaaaaaaaaaaaaaaaaaaaaa,
bbbbbbbbbbbbbbbbbbbbbb,
ccccccccccccccccccccccccccc,
dddddddddddddddddddddd
} = anObject
mxT52CRuqR6o5
2022-07-21 10:43:29 +08:00
原生 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']))
bojackhorseman
2022-07-21 10:44:02 +08:00
@coolair #2 那就用别名吧
```js
const { veryLongVariable: a, ... } = obj
```
yunying
2022-07-21 10:44:05 +08:00
@coolair 看下 loadash 有没有用得上的函数吧。
acthtml
2022-07-21 10:44:12 +08:00
lodash pick function

const newObj = _.pick(obj, [keyA, keyB])
Liam1997
2022-07-21 10:45:25 +08:00
lodash pick
rrfeng
2022-07-21 10:48:11 +08:00
可以反过来写,把不要的列出来?
shyling
2022-07-21 10:54:30 +08:00
没懂意思。。。一般来说 callFunc 不怕 object 多参数的吧?
Vegetable
2022-07-21 10:57:44 +08:00
你参数是一个 obj ,他参数多就多呗。你这么写也做不到 deepcopy ,...都多余
libook
2022-07-21 10:58:00 +08:00
换行写就行,挺清晰的。

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

const {
a,
b,
} = anObject;

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

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

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

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

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

© 2021 V2EX