【问题标题】:Convert array within array to averages将数组内的数组转换为平均值
【发布时间】:2017-05-16 13:02:20
【问题描述】:

我正在尝试转换:

var ic = [[[123,231,12],[56,43,124]],[[78,152,76],[64,132,200]]]

to(子数组的每个元素都有子数组的平均值)

var ig = [[[122,122,122],[74,74,74]],[[102,102,102],[132,132,132]]]

这是我的代码,平均函数有效,但它没有返回正确的新数组:

var color2grey = function (image /* this is the image in color*/) {

const average = function([a,b,c]) {
return [((a+b+c)/3), ((a+b+c)/3), ((a+b+c)/3)]
};

return image.map(function(subArray) {
 average(subArray);
});

}

这就是我得到的:

returns- (2) [undefined, undefined] 0 : undefined 1 : undefined length : 2 proto : Array(0)

【问题讨论】:

  • 你可以尝试添加你得到的输出,函数返回的内容,这样有助于调试。
  • returns- (2) [undefined, undefined] 0 : undefined 1 : undefined length : 2 proto : Array(0)

标签: javascript arrays average


【解决方案1】:

您可以使用map() 方法创建新数组,并在其中使用reduce() 计算每个数组的平均值,并使用Array.fill() 将平均值添加到新数组中。

var ic = [[[123,231,12],[56,43,124]],[[78,152,76],[64,132,200]]] 

var result = ic.map(a => a.map(function(e) {
  var avg = e.reduce((r, e) => r + e) / e.length
  return Array(e.length).fill(parseInt(avg))
}))

console.log(result)

【讨论】:

    【解决方案2】:

    您可以映射外部数组,获取最内部数组的平均值并为每个项目映射平均值。

    var ic = [[[123, 231, 12], [56, 43, 124]], [[78, 152, 76], [64, 132, 200]]],
        ig = ic.map(function (a) {
            return a.map(function (b) {
                var avg = Math.floor(b.reduce(function (a, b) { return a + b; }) / b.length);
                return b.map(function () { return avg; });
            });
        });
    
    console.log(ig);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    ES6

    var avg = array => array.reduce((a, b) => a + b) / array.length,
        ic = [[[123, 231, 12], [56, 43, 124]], [[78, 152, 76], [64, 132, 200]]],
        ig = ic.map(a => a.map(b => Array(b.length).fill(Math.floor(avg(b)))));
    
    console.log(ig);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2020-12-15
      • 1970-01-01
      相关资源
      最近更新 更多