Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取数组javascript中的最大值_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

获取数组javascript中的最大值

获取数组javascript中的最大值,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有以下数组: var arr = [ ["a","1"], ["b","3"], ["a","2"], ["b","5"] ] 我想提取上述数组中的最大值。 我期望的结果是: [ ["a","2"], ["b","5"] ] 更新: 我尝试了以下代码: var arr_res = []; var number_max = 0; for(let i = 0; i < arr.length; i++){ if(ar

我有以下数组:

var arr = [
    ["a","1"],
    ["b","3"],
    ["a","2"],
    ["b","5"]
]
我想提取上述数组中的最大值。

我期望的结果是:

  [
      ["a","2"],
      ["b","5"]
  ]
更新: 我尝试了以下代码:

var arr_res = [];
var number_max = 0;

for(let i = 0; i < arr.length; i++){
    if(arr_res.includes(arr[i][0]) == false){
        if(arr[i][1] > number_max){
            number_max = arr[i][1];
            arr_res.push([arr[i][0],number_max]);
        }
    }
}
var arr_res=[];
变量数_max=0;
for(设i=0;i最大数量){
数字_max=arr[i][1];
arr_res.push([arr[i][0],最大数量]);
}
}
}
结果并不像预期的那样

非常感谢任何帮助!非常感谢

使用在数组上进行迭代,并形成一个对象来保存最大值。由于我们有多个
a
b
(以及这么多…),所以我们使用Object使键唯一。在每次迭代中,检查键(
a,b,….
)是否存在于
old
(所有以前的迭代值)中。如果存在,则将当前值与现有值进行比较,必要时进行替换,将当前迭代值添加到
old
else

最后,使用将对象转换为数组

例如:

const arr=[“292”、“3”]、[“277”、“7”]、[“280”、“8”]、[“281”、“9”]、[“277”、“2”]、[“280”、“1”]、[“281”、“2”]、[“292”、“5”];
const res=Object.entries(arr.reduce)(旧的,当前的)=>{
旧[cur[0]]==“未定义”&(旧[cur[0]]=+cur[1]”的类型
if(数字(cur[1])>旧的[cur[0]]{
旧[cur[0]]=+cur[1]
}
返老还童
}, {}))

console.log(res)
以下是解决问题的基本路线图:

  • 创建一个变量来存储结果数组(例如,
    var result=[];
  • 迭代数组的元素
  • 检查每个内部数组的第一个元素
    • 如果其第一个元素(字母)在
      结果中没有记录,请添加它
    • 否则,请检查第二个内部数组元素(数字)
      • 如果结果数组中存储的数字小于当前记录的数字,请将其替换为当前记录的数字

有用的JavaScript命令有:,。

使用reduce和Math.max,它基本上是一行程序

const arr=[
[“a”,“1”],
[“b”,“3”],
[“a”、“2”],
[“b”,“5”],
];
const res=[…arr.reduce((a[k,v])=>a.set(k,Math.max(a.get(k)| | Number.MIN_SAFE_INTEGER,Number(v))),新映射)];

控制台日志(res)谢谢你的建议。我尝试过,但没有产生预期的结果,您可以帮助我在某个地方编写错误的代码
includes
无法执行您认为它可以执行的操作。因为
arr\u res
包含内部数组而不是普通值,
arr\u res.includes(arr[i][0])
将始终为false。您可以尝试使用
find
来搜索内部数组访问。我尝试使用
find
但没有搜索结果。你能推荐代码来帮助我吗?在这种情况下是错误的:var arr=
[[“292”,“3”],[“277”,“7”],[“280”,“8”],[“281”,“9”],[“277”,“2”],[“280”,“1”],[“281”,“2”],[“292”,“5”].
结果是:
[“277”,“2],“280”,“1”,“281”,“2”,“292”,“5”].
更新了答案,现在请检查一下。