Javascript 将array.prototype.map与平均值函数一起使用
在阅读了docs on map方法之后,我仍然无法让它工作。 我正在尝试使用map来获得数组中每对数字的平均值。请帮助我了解哪里出了问题Javascript 将array.prototype.map与平均值函数一起使用,javascript,arrays,Javascript,Arrays,在阅读了docs on map方法之后,我仍然无法让它工作。 我正在尝试使用map来获得数组中每对数字的平均值。请帮助我了解哪里出了问题 function getAverage(num1,num2){return Math.ceil((num1+num2)/2)}; function a(input){ var b = input.map(getAverage(num1,num2)); return b; } a([1,2,3,4]) //error num1 is not define
function getAverage(num1,num2){return Math.ceil((num1+num2)/2)};
function a(input){ var b = input.map(getAverage(num1,num2)); return b; }
a([1,2,3,4]) //error num1 is not defined
//expected [2,4]
map
将函数投影到列表/数组的每个元素,它只是在所有项上“映射”函数
[1, 2, 3].map(function (number) { return number + 1; });
// -> [2, 3, 4]
因此,首先您需要在“输入”数组中有成对的项,因此它看起来如下所示:
var numberPairs = [[1, 2], [3, 4]]
numberPairs.map(function (pair) {
return Math.ceil((pair[0] + pair[1]) / 2);
});
到目前为止,你所拥有的只是一个数字,而不是一对数字
转换后,您可以像这样使用map
:
var numberPairs = [[1, 2], [3, 4]]
numberPairs.map(function (pair) {
return Math.ceil((pair[0] + pair[1]) / 2);
});
这将提供:
[2, 4]
因此。
映射
将函数投影到列表/数组的每个元素,它只是在所有项上“映射”函数
[1, 2, 3].map(function (number) { return number + 1; });
// -> [2, 3, 4]
因此,首先您需要在“输入”数组中有成对的项,因此它看起来如下所示:
var numberPairs = [[1, 2], [3, 4]]
numberPairs.map(function (pair) {
return Math.ceil((pair[0] + pair[1]) / 2);
});
到目前为止,你所拥有的只是一个数字,而不是一对数字
转换后,您可以像这样使用map
:
var numberPairs = [[1, 2], [3, 4]]
numberPairs.map(function (pair) {
return Math.ceil((pair[0] + pair[1]) / 2);
});
这将提供:
[2, 4]
因此。您无法使用地图计算平均值。映射将函数传递给每个元素,然后返回具有相同形状的数组。事实并非如此,您希望从数组中获取一个值,并且可以使用它
//添加两个数字
常数加法器=(a,b)=>a+b;
//通过添加所有数字和除法来减少数组
//按数组长度
const getAverage=(arr)=>arr.reduce(加法器)/arr.length;
//产出2.5
log(getAverage([1,2,3,4])
您不能使用映射计算平均值。映射将函数传递给每个元素,然后返回具有相同形状的数组。事实并非如此,您希望从数组中获取一个值,并且可以使用它
//添加两个数字
常数加法器=(a,b)=>a+b;
//通过添加所有数字和除法来减少数组
//按数组长度
const getAverage=(arr)=>arr.reduce(加法器)/arr.length;
//产出2.5
console.log(getAverage([1,2,3,4])
您可以使用而不是map()
来聚合数组中每个n
值的平均值:
const sum=array=>array.reduce((a,b)=>a+b,0)
常量getAverage=n=>(平均值、值、索引、数组)=>索引%n==0
? […平均值,Math.ceil(sum(array.slice(index,index+n))/n)]
:平均数
常量结果=[1,2,3,4]。减少(getAverage(2),[]))
console.log(result)
您可以使用而不是map()
来聚合数组中每个n
值的平均值:
const sum=array=>array.reduce((a,b)=>a+b,0)
常量getAverage=n=>(平均值、值、索引、数组)=>索引%n==0
? […平均值,Math.ceil(sum(array.slice(index,index+n))/n)]
:平均数
常量结果=[1,2,3,4]。减少(getAverage(2),[]))
console.log(result)
每对数字的平均值-您是指相邻对还是所有组合。或者,以另一种方式询问-您能否告诉我们q.Thanks中更新的[1,2,3,4]
的预期输出?如果您想将函数传递给.map
,则应为input.map(getAverage)代码>虽然这不会使您的代码正常工作,但我仍然不知道输入[1,2,3,4]
时每对数字的平均值是多少。我是在装傻吗?1和2的平均值是1。5@jamiecOP想要对每对数字的平均值进行四舍五入-你是指相邻的对,还是所有的组合。或者,以另一种方式询问-您能否告诉我们q.Thanks中更新的[1,2,3,4]
的预期输出?如果您想将函数传递给.map
,则应为input.map(getAverage)代码>虽然这不会使您的代码正常工作,但我仍然不知道输入[1,2,3,4]
时每对数字的平均值是多少。我是在装傻吗?1和2的平均值是1。5@jamiecOP想把平均值加起来。。。