我有一个这样的数组:
["13rq8", "13rq6", "13rq4", "13rq2", "13dl", "12dl", "13rq12", "13rq10"]
我希望得到一个最终数组,它将相似的值组合在一起,只能通过字符串的最后一个数字相互改变(" 13rq8"," 13rq6",&# 34; 13rq4"," 13rq2"," 13rq12"," 13rq10"),并返回最大值,如下例所示:
["13dl", "12dl", "13rq12"]
你能帮帮我吗,请用Javascript解决这个问题?
谢谢!
答案 0 :(得分:0)
使用对象(例如tagNum
)跟踪每个前缀的最大值,并使用正则表达式提取前缀和尾随值:
var l = ["13rq8", "13rq6", "13rq4", "13rq2", "13dl", "12dl", "13rq12", "13rq10"];
var tagNum = {};
l.forEach(function(x) {
var m = x.match(/^(.*?)(\d*)$/);
var tag = m[1];
var num = parseInt("0" + m[2]);
if (tagNum[tag] === undefined || tagNum[tag] < num) tagNum[tag] = num;
});
var l2 = [];
for (var tag in tagNum) {
var num = tagNum[tag];
if (num) l2.push(tag + num);
else l2.push(tag);
}
console.log(l2);