gpt4 book ai didi

javascript - 过滤嵌套数组 - javascript

转载 作者:行者123 更新时间:2023-11-30 11:13:14 26 4
gpt4 key购买 nike

我有一个嵌套数组,每个数组都有一个字符串和一个整数,一些数组中的字符串是相同的,但我想过滤数组,以便它只包含具有唯一名称且具有最高值。这是我所拥有的和我想要的示例:

[['a', 1],['a', 2],['a', 3],['b',2],['b',5]]

我想做的是过滤,使其包含以下内容:

[['a', 3],['b', 5]]

我最初尝试使用 for 循环和 if 语句来执行此操作,然后是 for 循环和 while 语句,当我查看过滤时,但我不确定如何实现它,它将保持字符串最高值,请帮忙!!!!

最佳答案

你可以拿一个Map用于按第一个元素分组并通过检查存储值获取最大值。

var array = [['a', 1], ['a', 2], ['a', 3], ['b', 2], ['b', 5]],
result = Array.from(
array.reduce((m, [k, v]) => m.set(k, m.has(k) ? Math.max(v, m.get(k)) : v), new Map)
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

如果您想保留原始数组,您可以存储数组而不是值,稍后只获取映射的值。

var array = [['a', 1], ['a', 2], ['a', 3, 'bar'], ['b', 2], ['b', 5, 'foo']],
result = Array.from(array
.reduce(
(m, a) => m.has(a[0]) && m.get(a[0])[1] > a[1] ? m : m.set(a[0], a),
new Map
)
.values()
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 过滤嵌套数组 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com