从map函数返回undefined - 代码大战

时间:2016-12-14 09:32:42

标签: javascript arrays

我得到了一个充满整数的数组,想要创建一个新数组,其中包含每个整数的平均值和他的追随者。为此,我尝试使用map函数。

var arr = [1,2,3,4];

arr.map(function(a, b){
   return (a + b / 2);
});

我相信这是有效的,就好像我在控制台中运行它一切都按预期工作,但问题是它返回未定义的挑战设置。 challenge is set here。{{3}}。我错过了一些愚蠢的东西吗?

3 个答案:

答案 0 :(得分:2)

您可以使用Array#map的回调参数,它是元素本身,索引和对数组的引用。然后将结果分配给变量并跳过第一个元素,因为您可以根据需要再获得一个元素。



var arr = [1, 2, 3, 4],
    result = arr.map(function(a, i, aa) {
        return (aa[i - 1] + a) / 2;
    });

result.shift();
console.log(result);




使用Array#reduce的另一种可能的解决方案,可以更好地映射您的尝试。



var arr = [1, 2, 3, 4],
    result = [];

arr.reduce(function(a, b) {
    result.push((a + b) / 2);
    return b;
});

console.log(result);




答案 1 :(得分:0)

基本解决方案可能是迭代。

foo = function(arr){ 
  var result=[];
  for( var i=0; i<arr.length-1; i++) {
    result.push((arr[i]+arr[i+1])/2)
  }
  return result;
}

答案 2 :(得分:0)

你应该了解map()或reduce()或filter