在javascript中执行条件数组方法的最佳方法

Jal*_*lal 1 javascript

假设我们有函数返回数组让我们说 fn(parm1, parm2, parm3),我想条件反转返回的数组.

我知道你可以这样做:

condition ? fn(parm1, parm2, parm3).reverse() : fn(parm1, parm2, parm3)
Run Code Online (Sandbox Code Playgroud)

但就我而言,我不想两次打电话.不是数组甚至是调用数组的函数.

所以我的问题是,有什么明显可做的事情,我错过了

array[condition  && .reverse()]
Run Code Online (Sandbox Code Playgroud)

或者第一种方式是调用数组方法的唯一方法.

Nin*_*olz 6

您可以使用Array#slice默认方法.

result = fn(parm1, parm2, parm3)[condition ? 'reverse' : 'slice']();
Run Code Online (Sandbox Code Playgroud)

slice您可以实现一个this仅从对象转换而不会改变它的函数,而不是防止获取数组的副本.

Array.prototype.nop = function () { return this; };

result = fn(parm1, parm2, parm3)[condition ? 'reverse' : 'nop']();
Run Code Online (Sandbox Code Playgroud)