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我误解了它们的返回值。你的评论很有道理,我现在明白了。非常感谢你!