gpt4 book ai didi

javascript - 有没有办法在 JavaScript 中有条件地缩短对象的成员函数?

转载 作者:行者123 更新时间:2023-12-02 21:24:36 24 4
gpt4 key购买 nike

我正在创建一个既可以使用 .toArray() 也可以不使用的函数。是否有条件方式在 es6、es7 或 es8 中添加此内容?

await db
.collection(collection)
.find(params)
.toArray() //I want tis conditionally added or not

从这个意义上来说(这是行不通的)

   multiple && .toArray()

或者这只能通过两种方法实现?

最佳答案

Is there a way to shorten a member function of an object conditionally in JavaScript?

不是真的。您有一组链接的方法,并且无法有条件地将某些内容插入链中。

我的感觉是最明确的选择是:

let x = db.collection(collection).find(params);
if (someCondition) x = await x.toArray();

还有其他一些奇怪的事情,例如提前在对象上放置一个无操作方法,然后从有时包含“toArray”有时包含“noop”的变量执行方法。

let x = await db.collection(collection).find(params)[someCondition ? "toArray" : "noop"]();

但是,我认为我自己不会以这种方式编写代码,因为我认为它不是很清楚。

<小时/>

仅供引用,您的特定示例有点奇怪,因为 .find() 返回一个游标对象,而 .toArray() 返回一个解析为数组的 promise 。因此,您还要求以一种方式与另一种方式最终获得不同类型的数据。无论如何,这种不同的结果类型似乎都必须走不同的代码路径,因此条件分支不仅仅是这一步。这表明人们应该真正着眼于整体问题的大局,而不仅仅是这一步或顺序才能提出最佳解决方案。

关于javascript - 有没有办法在 JavaScript 中有条件地缩短对象的成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60767420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com