Javascript 如何根据第二个子数组值获取最大数组元素

Javascript 如何根据第二个子数组值获取最大数组元素,javascript,arrays,d3.js,d3,Javascript,Arrays,D3.js,D3,我有一个JavaScript数组: [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]] 如何根据子数组中第二个元素的值获取最大元素 在上述情况下,我希望获得元素: [-782, 5] 因为5是所有子数组中最大的第二个

我有一个JavaScript数组:

[[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]]
如何根据子数组中第二个元素的值获取最大元素

在上述情况下,我希望获得元素:

[-782, 5]
因为5是所有子数组中最大的第二个值。 如果有多个子数组具有较大的第二个值,我希望得到第一个

Mariusz

var数组=[[-786,2]、-783,1]、-782,5]、-781,1]、-779,2]、-778,1]、-775,1]、-774,1]、-773,1]、-771,2]、-769,1]、-767,1]、-766,1]、-763,2]、-760,2];
var array = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]];
var maxElementIndex = 0;
for (var i = 0; i < array.length; i++) {
    if (array[i][1] > array[maxElementIndex][1]) {
        maxElementIndex = i;
    }
}

console.log(array[maxElementIndex]);
var maxElementIndex=0; 对于(var i=0;i数组[maxElementIndex][1]){ maxElementIndex=i; } } log(数组[maxElementIndex]);
根据数组中每个元素的第二个元素执行降序排序

var array = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]];


array.sort(function(a, b) {
    return b[1] - a[1];
});

console.log(array[0]);

请注意,虽然此解决方案非常简洁,但仅用于查找最大或最小元素的sort要比在单个迭代中查找最大/最小元素的
for
循环慢得多。

因为这是标记的,所以您也可以从模块中使用(强调我的):

var target = [[-786, 2], [-783, 1], [-782, 5], [-781, 1], [-779, 2], [-778, 1], [-775, 1], [-774, 1], [-773, 1], [-771, 2], [-769, 1], [-767, 1], [-766, 1], [-763, 2], [-760, 2]]
var max = 0, tmp = 0;
var max_entry, tmp_entry;
while (target.length > 0){
  tmp_entry = target.pop();
  tmp = tmp_entry[1];
  if (tmp > max){
      max = tmp;
      max_entry = tmp_entry;
  }
}
alert(max_entry);
根据指定的比较器或访问器返回指定iterable的最大元素

通过提供一个访问器函数,返回每个元素数组中的第二个元素
d3。grest()
将返回与所有第二个元素相比具有最大值的元素。
const data=[[-786,2]、-783,1]、-782,5]、-781,1]、-779,2]、-778,1]、-775,1]、-774,1]、-773,1]、-771,2]、-769,1]、-767,1]、-766,1]、-763,2]、-760,2];
常数最大=d3.最大(数据,d=>d[1]);
console.log(最大)

你检查过这个答案了吗?在面试中,不允许您使用sort,也强烈建议您不要使用sort,因为它非常慢。