获取数组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”].
更新了答案,现在请检查一下。