Javascript 是否可以连接方法,如sort。换档、弹出、推动和取消换档

Javascript 是否可以连接方法,如sort。换档、弹出、推动和取消换档,javascript,methods,Javascript,Methods,我想知道那些排序,狗屎,弹出,推送,取消移位的方法在连接到其他方法时是否不能使用 我目前的代码如下 function trimmedAverages(arr) { let sum = 0; arr.sort((a, b) => a - b); arr.shift(); arr.pop(); arr.map( x => sum += x); return Math.round(sum / arr.length); } 我想如果我能

我想知道那些
排序
狗屎
弹出
推送
取消移位
的方法在连接到其他方法时是否不能使用

我目前的代码如下

function trimmedAverages(arr) {   
    let sum = 0;
    arr.sort((a, b) => a - b);
    arr.shift();
    arr.pop();
    arr.map( x => sum += x);
    return Math.round(sum / arr.length);
}
我想如果我能像下面那样连接它们会很简单,但它返回了一条错误消息

function trimmedAverages(arr) { 
    let sum = 0;
    arr.sort((a, b) => a - b).shift().pop();
    arr.map( x => sum += x);
    return Math.round(sum / arr.length);
}   
// Error : VM6710:3 Uncaught TypeError: arr.sort(...).shift(...).pop is not a function
// at trimmedAverages (<anonymous>:3:36)
// at <anonymous>:1:1
函数平均值(arr){
设和=0;
arr.sort((a,b)=>a-b.shift().pop();
arr.map(x=>sum+=x);
返回数学四舍五入(总和/arr.length);
}   
//错误:VM6710:3未捕获类型错误:arr.sort(…).shift(…).pop不是函数
//平均值(3:36)
//时间:1:1
有人能给我解释一下吗?
提前感谢您。

您不能链接
shift()
pop()
,因为
shift()
返回已删除的元素,而不是更新的数组

根据您的需要,您可以使用
.slice()
获取不包含第一个和最后一个元素的子数组。您可以从
sort()
链接它,因为它返回数组(除了就地修改数组)

由于
slice()
不会修改数组,因此在计算平均值时需要从长度中减去2

函数平均值(arr){
if(arr.length a-b).slice(1,-1).forEach(x=>sum+=x);
返回数学四舍五入(总和/(arr.length-2));
}

log(三次平均值([1,3,10,5,6,19,20,8])所有这些都不会返回一个数组,更不用说返回您操作的同一个数组了。你检查过他们返回的类型吗?为什么您希望链接会起作用?您不应该使用
map()
如果您没有使用返回值,请使用
forEach()
如果主体是用于副作用的。
shift()
不返回修改后的数组,它返回被移出的元素。@VLAZ实际上
sort
返回数组。它返回的数组与仅为链接方法而调用该方法的数组相同。但是,是的,其他方法无法链接。>VLAZ我误解了它们的返回值。你的评论很有道理,我现在明白了。非常感谢你!