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

如何用if语句实现数组查找:找到返回索引,未找到返回-1?代码排查

问题分析与修复

问题根源

  1. 循环提前终止:你的for循环只执行第一次迭代就会返回结果。如果第一个元素不等于目标值,else分支直接return -1,循环直接终止,根本不会检查数组后面的元素,自然找不到后面的目标值。
  2. 返回值格式错误:找到目标时,你返回的是[nums.indexOf(exist)]——一个包含索引的数组,但需求是返回单个数字索引。而且当前循环的i就是该元素的索引,完全没必要额外调用indexOf。

修复后的代码

function search(nums, target) {
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] === target) {
            return i; // 直接返回当前元素的索引
        }
    }
    // 遍历完所有元素都没找到目标,才返回-1
    return -1;
}

console.log(search([-1, 0, 3, 5, 9, 12], 9)); // 输出4

修复说明

  • 删掉了else分支的return,让循环可以完整遍历数组的每一个元素
  • 找到目标时直接返回循环变量i,它就是当前匹配元素的索引,简洁高效
  • 把return -1移到循环外部,只有当整个数组都遍历完且没找到目标时,才返回-1,符合需求逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:40:28