js实现一个含有字符串的数组,例如:["a", "b", "a", "c", "b" ,"d","a",1,1],需要得到一个新数组["a1", "b1","a2" ,"c","b2","d" ,"a3","11""12"]
时间: 2023-09-04 14:10:50 浏览: 60
这个问题的解决方法是使用一个对象来记录每个字符串出现的次数,然后根据次数来构造新数组。
代码实现如下:
```javascript
function transformArray(arr) {
const map = {};
const result = [];
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (typeof item === 'string') {
if (map[item]) {
map[item]++;
result.push(`${item}${map[item]}`);
} else {
map[item] = 1;
result.push(`${item}1`);
}
} else if (typeof item === 'number') {
result.push(`${item}${item}`);
}
}
return result;
}
const arr = ["a", "b", "a", "c", "b" ,"d","a",1,1];
console.log(transformArray(arr)); // ["a1", "b1", "a2", "c", "b2", "d", "a3", "11", "11"]
```
这个函数首先定义了一个空对象`map`和一个空数组`result`,用来记录每个字符串出现的次数和构造新数组。
然后遍历原始数组`arr`,对于每个元素,如果是字符串,就检查它在`map`中是否已经有记录,如果有,就将次数加1,然后构造新字符串并添加到`result`中;如果没有,就将次数设置为1,并构造新字符串添加到`result`中。
如果元素是数字,就直接构造一个新字符串,其中重复数字两次,然后添加到`result`中。
最后返回`result`即可。
阅读全文