Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将array.prototype.map与平均值函数一起使用_Javascript_Arrays - Fatal编程技术网

Javascript 将array.prototype.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

在阅读了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 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想把平均值加起来。。。