You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在二维数组中查找指定数值的位置?(附Rust代码示例)

在Rust二维数组中查找指定值的所有位置

要找出给定二维数组中所有值为20的元素位置,我们可以通过遍历数组并记录匹配项的索引来实现,以下是两种实用的实现方式:

首先是原数组定义:

let nested_array = [
    [17, 16, 15, 14, 13],
    [18, 5, 4, 3, 12],
    [19, 6, 1, 2, 11],
    [20, 7, 8, 9, 10],
    [21, 20, 23, 24, 25],
];

方法一:嵌套循环遍历

这种方式逻辑直观,适合快速理解:

let target = 20;
let mut positions = Vec::new();

// 遍历每一行,拿到行索引和行内容
for (row_idx, row) in nested_array.iter().enumerate() {
    // 遍历当前行的每个元素,拿到列索引和元素值
    for (col_idx, &value) in row.iter().enumerate() {
        if value == target {
            positions.push((row_idx, col_idx));
        }
    }
}

// 输出结果
println!("值为{}的位置:{:?}", target, positions);

方法二:迭代器链式调用

利用Rust的迭代器特性,写出更简洁的函数式风格代码:

let target = 20;
let positions: Vec<(usize, usize)> = nested_array
    .iter()
    .enumerate()
    // 把行索引和该行的匹配元素位置组合起来
    .flat_map(|(row_idx, row)| {
        row.iter()
            .enumerate()
            .filter(move |(_, &val)| val == target)
            .map(move |(col_idx, _)| (row_idx, col_idx))
    })
    .collect();

println!("值为{}的位置:{:?}", target, positions);

两种方法最终都会输出:值为20的位置:[(3, 0), (4, 1)],对应数组中第4行第1个元素和第5行第2个元素(Rust数组索引从0开始)。

内容的提问来源于stack exchange,提问作者Winston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:22:35