从地图功能 - 代码战争中返回不确定的



我被赋予了一个装满整数的数组,并希望用每个整数编号和他的追随者的平均值创建一个新数组。为了实现这一目标,我尝试使用map函数。

var arr = [1,2,3,4];
arr.map(function(a, b){
   return (a + b / 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);

基本解决方案可能与迭代有关。

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

您应该了解映射()或redial()或过滤器

最新更新