JavaScript - 创建一个新方法,查找数组

时间:2015-07-24 03:35:50

标签: javascript arrays function methods integer

我需要创建一个方法,在给定组大小的情况下,找到数组中连续条目的最大和。它应该以{{1​​}}和间隔大小作为输入,并且应该返回组中第一个条目的最大总和和索引。

例如,在以下array中,如果组大小为Array [1,1,1,1,1,1,1,2],则结果将是3的最大总和和6的位置。

如何完成这个?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您没有发布任何代码,我的回答将是一般性的。

最简单的方法是遍历数组并找到当前数字的总和,其中n个连续数字,直到currentDigitIndex< = array.length -n,在这个循环中你应该将currentDigitSum与currentMaxSum进行比较并存储哪个currentMaxSum中的值更大(也存储maxSumPositionIndex)。

在解决这个问题的同时,您应该考虑以下内容:如果数组长度等于1或0,如果数组具有负整数,如果组大小将大于数组长度,如果您的数组有2或3个同样大的金额......

答案 1 :(得分:0)

这是我想出的答案。它适用于MOST场景,而不是全部,因此可以改进答案。

Array.prototype.maxGroupOf = function (size) {
  max = -Infinity;
  indexSpot = 0;
  len = this.length - size + 1;
  add = function (x, y) {
    return x + y;
  };
  this.forEach(function (x, y) {
    if (y > len) return;
    b = this.slice(y, y + size).reduce(add, 0);
    if (b > max) {
      max = b;
      indexSpot = y;
    }
  }, this);
  return {
    sum: max,
    position: indexSpot
  };
};

console.log([1, 1, 1, 1, 1, 1, 1, 2].maxGroupOf(2));

---Output---
Object {sum: 3, position: 6}