我试图找出群组中的最大数字,并将它们分配到一组唯一的群组中。我尝试使用map和lodash uniq但没有帮助
实施例
让我们说主数组由一个typeid和一个由冒号(:)分隔的数字组成 我想从每个typeid中识别出最大的数字,然后用它们创建一个数组。
从下面的示例中,我尝试生成如下所示的输出
["abcdwidets:6564","nightly:6543"]
6564& 6543是各自群体中最大的值
代码
var mainarray = ["abcdwidets:1234","abcdwidets:3432","abcdwidets:6564","nightly:3423","nightly:6543"]
var arr = [];
var needle;
var i = 0;
var flag = 0;
mainarray.forEach( (element) => {
arr = element.split(":");
arr = arr.map((val) => {
return val
});
})
答案 0 :(得分:2)
Reduce将数组放入Map,并获得每个key
(:
之前的字符串)的最大数字。然后Array.map()
地图的entries iterator(按spreading)返回数组:
const mainarray = ["abcdwidets:1234","abcdwidets:3432","abcdwidets:6564","nightly:3423","nightly:6543"];
const result = [...mainarray.reduce((r, s) => {
const [k, v] = s.split(':');
if(!r.has(k) || r.get(k) < v) r.set(k, v);
return r;
}, new Map())]
.map(([k, v]) => `${k}:${v}`);
console.log(result);
答案 1 :(得分:0)
你需要将mainArray分成2个这样的数组
array = [
{
id,
...
nested: [
{
id,
..
},
{
id,
..
}
]
},
...
]
一旦你将主阵列拆分成这两个,那么你只需要进行冒泡排序并再将这两个变为1。