在JavaScript多维数组中查找每个x值的最大值

程序语法

我想将数组“减少”为JavaScript多维数组中每个x(或索引0)值的最大值。

我的数组如下:

var mulitple = [["1/2013", 1],
                ["1/2013", 5],
                ["1/2013", 7],
                ["1/2013", 6],
                ["1/2013", 5],
                ["2/2013", 7],
                ["2/2013", 10],
                ["2/2013", 10],
                ["3/2013", 7],
                ["3/2013", 10],
                ["3/2013", 10],
                ["4/2013", 1],
                ["4/2013", 5],
                ["4/2013", 7],
                ["4/2013", 6],
                ["4/2013", 5],
                ["5/2013", 7]];

因此,最终结果应如下所示:

[["1/2013", 7],
 ["2/2013", 10],
 ["3/2013", 10],
 ["4/2013", 7],
 ["5/2013", 7]];

如何在JavaScript中实现这一目标。

编辑:

赞成我的问题的糟糕透顶的人。

无论如何,这就是我想出的。

var max = 0;
var newarray = [];
for (var i = 1; i < mulitple.length; i++) {
    if (mulitple[i - 1][0] == mulitple[i][0]) {
        if (mulitple[i - 1][1] > max) {
            max = mulitple[i - 1][1];
        }
    }
    else {
        if (mulitple[i - 1][1] > max) {
            max = mulitple[i - 1][1];
        }
        newarray.push([mulitple[i - 1][0], max]);
        max = 0;
    }
}
newarray.push([mulitple[mulitple.length - 1][0], max]);

我遇到的问题是,我无法获取最后一个值(用于唯一记录)以进入数组。运行上面的代码后,这就是我的结果。

[["1/2013", 7], ["2/2013", 10], ["3/2013", 10], ["4/2013", 7], ["5/2013", 0]]
群集_1

这假定原始数组已被排序。如果不是,则必须编写其他函数来进行sort out

function findMaximums(data) {
    var out = [], maximums = {}, order = new Set;

    data.reduce(function(acc, pair) {
        if (
            // Accumulator has value and it's lower than current
            (acc[pair[0]] && acc[pair[0]][1] < pair[1]) ||
            // Accumulator doesn't have value
            !acc[pair[0]]
        ) {
            acc[pair[0]] = pair; // Store maximum in accumulator
            order.add(pair[0]) // Store order in set
        }
        return acc;
    }, maximums);

    order.forEach(function(key) {
        out.push(maximums[key]); // Populate out with maximums by order
    });

    return out;
}

findMaximums(multiple);

/*[
    [
        "1/2013",
        7
    ],
    [
        "2/2013",
        10
    ],
    [
        "3/2013",
        10
    ],
    [
        "4/2013",
        7
    ],
    [
        "5/2013",
        7
    ]
]*/

更新1:相同,但不包含Set

function findMaximums(data) {
    var order = [];

    var maximums = data.reduce(function(acc, pair) {
        if (
            // Accumulator has value and it's lower than current
            (acc[pair[0]] && acc[pair[0]][2] < pair[1]) ||
            // Accumulator doesn't have value
            !acc[pair[0]]
        ) {
            // Store maximum
            acc[pair[0]] = pair;
            // Store order
            if (order.indexOf(pair[0]) === -1) {
                order.push(pair[0])
            }
        }
        return acc;
    }, {});

    return order.map(function(key) {
        return maximums[key]; // Populate out with maximums by order
    });
}

更新2:较短的版本。

function findMaximums(data) {
  return data.filter(function(p1, i1) {
    return !data.some(function(p2, i2) {
      return p1[0] === p2[0] && ( (p1[1] < p2[1]) || (p1[1] === p2[1] && i1 > i2) );
    });
  });
}

在此版本中,如果输入数据中没有其他对,则让对保留在输出中:

  1. 有同一个月。
  2. 具有更大的价值。

或者

  1. 具有相同的值,但比被测对早。这样可以防止重复。

在这里阅读有关使用的Array方法的更多信息:filtersome

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从多维数组中获取每个索引的最大值-javascript

来自分类Dev

多维数组javascript的最大值

来自分类Dev

javascript-在多维数组中获取最大值

来自分类Dev

在Javascript数组中查找绝对最大值

来自分类Dev

使用JavaScript函数在数组中查找最大值

来自分类Dev

使用JavaScript查找数组中的最小和最大值

来自分类Dev

Ruby使用max_by在多维数组中查找具有最大值的元素

来自分类Dev

查找给定大小的每个连续子数组的最大值

来自分类Dev

使用Javascript从多维数组获取最大值

来自分类Dev

获取多维数组中每列的最大值

来自分类Dev

从多维关联数组的最大值中检索键

来自分类Dev

查找非固定长度x的每个子数组的最小值的最大值,其中1 <= x <= N

来自分类Dev

在包含 NaN 值的对象数组中查找最大值

来自分类Dev

MATLAB:在数组数据的每个间隔中查找最大值?

来自分类Dev

查找给定数组中每个窗口大小的最大值

来自分类Dev

多维数组的逐元素最大值

来自分类Dev

从多维数组 (ndarray) 返回最大值

来自分类Dev

在数组Javascript中查找最小值和最大值

来自分类Dev

Javascript切片数组查找最大值

来自分类Dev

php数组中每个键值的最大值

来自分类Dev

php数组中每个键值的最大值

来自分类Dev

使用递归查找数组中的最大值

来自分类Dev

在numpy数组中查找局部最大值

来自分类Dev

使用NumPy在数组中查找最大值的索引

来自分类Dev

在对象数组中查找属性的最大值

来自分类Dev

Excel公式在数组中查找最大值

来自分类Dev

从通过表单提交创建的数组中查找最大值

来自分类Dev

在数组中查找列的最大值

来自分类Dev

使用递归查找数组中的最大值

Related 相关文章

热门标签

归档