js 一个含有字符串的数组,例如:["a","b"."a” ,b”,d”.a”1,1].需要得到一个新数组 ["a1""b1""a2""c","b2""d""a3""11""12"]
时间: 2023-09-11 18:08:15 浏览: 82
这个题目有点不清晰,我假设题目意思是将每个字符串中的数字累加,并且将相同的字符串合并为一个,最后返回一个新的数组。
可以使用一个对象来记录每个字符串出现的次数和累加的数字,然后再将对象转换成数组。
以下是实现代码:
```javascript
function transformArray(arr) {
const obj = {};
for (let i = 0; i < arr.length; i++) {
const str = arr[i];
const match = str.match(/\d+/g);
const num = match ? match.reduce((acc, val) => acc + parseInt(val), 0) : 0;
const key = str.replace(/\d+/g, '');
if (!obj[key]) {
obj[key] = {
str: key,
count: 1,
num: num,
};
} else {
obj[key].count++;
obj[key].num += num;
}
}
return Object.values(obj).map(({ str, count, num }) => `${str}${count}${num}`);
}
const arr = ["a","b","a","b","d","a1","1","1"];
const result = transformArray(arr);
console.log(result); // ["a3","b2","d1","a11","12"]
```
这个实现的时间复杂度是 O(n),其中 n 是数组的长度。
阅读全文