在不同编程语言中,有多种方法可以记录数组中某个元素的位置,以下是一些示例:
### JavaScript 方法
可以使用 `indexOf` 结合循环来记录元素出现的位置。示例代码如下:
```javascript
// 数组中某元素出现的位置和次数
var arr = ['red', 'blue', 'green', 'red', 'yellow', 'red', 'blue', 'green'];
var element = 'red';
var index = arr.indexOf(element);
var positions = [];
while (index != -1) {
positions.push(index);
index = arr.indexOf(element, index + 1);
}
console.log(positions);
```
上述代码通过 `indexOf` 方法查找元素第一次出现的位置,然后在循环中不断从该位置的下一个位置继续查找,将每次找到的位置记录在 `positions` 数组中 [^1]。
还可以使用以下封装的函数来实现查找元素在数组中出现的位置:
```javascript
(function(){
var arr = [12,23,345,34,56,76,12,23,76];
//第一个参数是要查找的对象
//第二个参数是要查找的元素
function search(obj,cont) {
//保存出现的位置
var position = [];
var i = 0;
//如果要查找的元素在对象中存在
while(obj.indexOf(cont,i) >= 0){
//保存元素出现的位置
var index = obj.indexOf(cont,i);
//把出现的位置保存到数组中
position.push(index);
//从这个元素的下一开始
i = index + 1;
}
console.log(position);
}
search(arr,12);
})()
```
此代码定义了一个 `search` 函数,它接受一个数组和要查找的元素作为参数,通过循环和 `indexOf` 方法记录元素出现的位置 [^4]。
### Java 方法
在 Java 中可以使用数组来记录指定元素出现的位置,示例代码如下:
```java
class Solution {
public int[] occurrencesOfElement(int[] nums, int x) {
int n = nums.length;
int[] list = new int[n + 1];
// 初始状态下认为所有元素都不能在 nums 中查询到
java.util.Arrays.fill(list, -1);
int count = 0;
for(int i = 0; i < n; i++) {
if(nums[i] == x) {
// 记录某次出现的元素所在的下标
list[count++] = i;
}
}
int[] result = new int[count];
System.arraycopy(list, 0, result, 0, count);
return result;
}
}
```
上述 Java 代码定义了一个 `occurrencesOfElement` 方法,它遍历数组 `nums`,当遇到指定元素 `x` 时,将其位置记录在 `list` 数组中,最后将记录的位置复制到 `result` 数组并返回 [^2]。
### ActionScript 方法
在 ActionScript 中可以使用对象来记录数组中相同元素的位置,示例代码如下:
```actionscript
var my_array:Array=[1,2,1,2,1,2,3,2,1];
var key_obj:Object ={};
var p:uint =my_array.length;
while (p-->0) {
key_obj[my_array[p]]?key_obj[my_array[p]].push(p):key_obj[my_array[p]]=[p];
}
for (var _p in key_obj) {
trace(_p+"的位置有:"+key_obj[_p]);
}
```
这段代码通过循环遍历数组,将每个元素作为对象的键,其位置作为值存储在数组中,最后通过遍历对象输出每个元素的位置 [^5]。