js indexOf 1)去重 var arr = [1,4,5,4,5,1,2,3,2,3]; 返回的结果[1,4,5,2,3] 2)编写函数uniq(str),返回去掉str重复项的字符串。 例如,uniq(‘12223333’)将返回’123’ 3)完成getSum(),该函数接收1个数组作为参数,返回该数组中所有非重复数字的和; 例如:getSum([undefined,"23year",19,"097",1,"hello",null,1])
时间: 2023-08-19 19:20:53 浏览: 98
好的,来一道 JavaScript 的题目,非常棒!让我们一步一步来解决这些问题:
1. 去重数组
我们可以使用两个循环,外层循环遍历数组中的每一个元素,内层循环遍历当前元素之后的所有元素,如果有重复的元素,则将这个元素从数组中删除。
代码如下:
```javascript
var arr = [1, 4, 5, 4, 5, 1, 2, 3, 2, 3];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
console.log(arr); // [1, 4, 5, 2, 3]
```
2. 去重字符串
我们可以创建一个空对象,遍历字符串中的每一个字符,如果这个字符不在对象中,则将其添加到对象中,并将其添加到结果字符串中。
代码如下:
```javascript
function uniq(str) {
var obj = {};
var result = '';
for (var i = 0; i < str.length; i++) {
if (!obj[str[i]]) {
obj[str[i]] = true;
result += str[i];
}
}
return result;
}
console.log(uniq('12223333')); // '123'
```
3. 数组中所有非重复数字的和
我们可以先将数组去重,然后遍历数组中的每一个元素,如果这个元素不是 NaN,并且在数组中只出现了一次,则将其加入到总和中。
代码如下:
```javascript
function getSum(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
if (!isNaN(arr[i]) && arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
sum += Number(arr[i]);
}
}
return sum;
}
console.log(getSum([undefined, '23year', 19, '097', 1, 'hello', null, 1])); // 21
```
以上就是三个问题的解答,希望能够帮到你!
阅读全文