JS函数问题:数组转字符串后无法去除重复字符,求解决方案
问题分析与解决
你的代码里的正则/(.)\1+/g只能匹配连续重复的字符,但数组转成的字符串中重复字符是分散的(比如示例里的[4,7,5,7]转成"4757",两个7不连续),所以正则起不到去重作用,返回的还是原字符串。
下面是两种可行的去重方案:
方案一:利用Set自动去重(简洁高效)
Set会自动过滤重复元素,且保留元素的插入顺序,适合这种场景:
function minValue(values){ // 把数组每个元素转成字符串,用Set去重后再拼接成结果 return [...new Set(values.map(item => item.toString()))].join(''); } console.log(minValue([4, 7, 5, 7])); // 输出 "475"
方案二:手动遍历去重(更灵活,适合自定义规则)
如果需要更精细的控制,可以手动遍历字符,记录已出现的内容:
function minValue(values){ const str = values.toString().split(",").join(""); const seen = new Set(); let result = ""; for (const char of str) { if (!seen.has(char)) { seen.add(char); result += char; } } return result; } console.log(minValue([4, 7, 5, 7])); // 输出 "475"
内容的提问来源于stack exchange,提问作者shiroSn
相关产品推荐
相关产品推荐

