使用Javascript获取数组中类似项的最大值

时间:2016-05-31 22:37:50

标签: javascript arrays max

我有一个这样的数组:

["13rq8", "13rq6", "13rq4", "13rq2", "13dl", "12dl", "13rq12", "13rq10"]

我希望得到一个最终数组,它将相似的值组合在一起,只能通过字符串的最后一个数字相互改变(" 13rq8"," 13rq6",&# 34; 13rq4"," 13rq2"," 13rq12"," 13rq10"),并返回最大值,如下例所示:

["13dl", "12dl", "13rq12"]

你能帮帮我吗,请用Javascript解决这个问题?

谢谢!

1 个答案:

答案 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);

相关问题