【js编程题利用indexOf】在JavaScript编程中,`indexOf()` 是一个非常常用的方法,用于查找数组或字符串中某个元素或字符的索引位置。它返回的是该元素首次出现的位置,如果未找到则返回 -1。本文将通过几个典型的编程题,总结如何利用 `indexOf()` 解决实际问题,并以表格形式展示答案。
一、常见用法总结
| 方法 | 说明 | 示例 |
| `array.indexOf(value)` | 查找数组中某个值的索引(从前往后) | `[1,2,3,4].indexOf(3)` → 2 |
| `string.indexOf(searchValue)` | 查找字符串中某个子串的起始位置 | `"hello".indexOf("e")` → 1 |
| `array.indexOf(value, fromIndex)` | 从指定索引开始查找 | `[1,2,3,4].indexOf(2, 2)` → -1 |
二、典型编程题及解答
题目1:判断数组中是否包含某元素
题目描述:编写一个函数,判断数组中是否包含某个元素,若包含返回 `true`,否则返回 `false`。
解法:
```javascript
function contains(arr, value) {
return arr.indexOf(value) !== -1;
}
```
测试示例:
| 数组 | 元素 | 结果 |
| [1,2,3] | 2 | true |
| [1,2,3] | 4 | false |
| ["a","b"] | "a" | true |
题目2:查找字符串中的第一个匹配字符位置
题目描述:给定一个字符串和一个字符,返回该字符在字符串中第一次出现的索引。
解法:
```javascript
function findChar(str, char) {
return str.indexOf(char);
}
```
测试示例:
| 字符串 | 字符 | 结果 |
| "javascript" | "s" | 4 |
| "hello world" | "o" | 4 |
| "abcde" | "x" | -1 |
题目3:去除数组中重复元素
题目描述:给定一个数组,去除其中重复的元素并返回新数组。
解法:
```javascript
function removeDuplicates(arr) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) === i) {
result.push(arr[i]);
}
}
return result;
}
```
测试示例:
| 输入数组 | 输出数组 |
| [1,2,2,3,4] | [1,2,3,4] |
| ["a", "b", "a"] | ["a", "b"] |
| [5,5,5] | [5] |
题目4:查找多个匹配项的索引
题目描述:给定一个数组和一个值,返回所有该值的索引位置。
解法:
```javascript
function findAllIndices(arr, value) {
let indices = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === value) {
indices.push(i);
}
}
return indices;
}
```
测试示例:
| 数组 | 值 | 结果 |
| [1,2,3,2,4] | 2 | [1,3] |
| ["a", "b", "a"] | "a" | [0,2] |
| [5,5,5] | 5 | [0,1,2] |
三、注意事项
- `indexOf()` 只能查找第一个匹配项。
- 对于对象数组,`indexOf()` 无法正确识别相同内容的对象(需使用 `find()` 或自定义比较逻辑)。
- 在处理大型数据时,频繁调用 `indexOf()` 可能会影响性能,建议使用 `Set` 或 `Map` 提升效率。
四、总结
`indexOf()` 是 JavaScript 中非常实用的一个方法,尤其在处理数组和字符串时,可以快速定位元素或字符的位置。通过合理使用 `indexOf()`,我们可以高效地完成许多常见的编程任务,如判断存在性、查找位置、去重等。掌握其用法是提升 JavaScript 编程能力的重要一步。


