首页 > 解决方案 > 为什么在某些语言中 findIndex 返回 -1?

问题描述

我正在研究不同语言的错误处理方法。Array.findIndex并且Array.find当项目不存在时表现完全不同。find方法更一致地返回null/undefined值或抛出异常。但在某些语言中,findIndexreturn-1表示缺失值。我的问题是,退货有什么好处-1吗?

如果不处理此错误collection[items.findIndex("non-exist")]很容易导致运行时错误,那么我在这里缺少什么?

编辑:更具体地说,如果语言支持异常,为什么在某些语言中仍然返回-1而不是抛出?

标签: arrays

解决方案


在大多数语言中,-1是一个不能表示数组索引的数字。因此,如果.findIndex()方法返回,则意味着肯定-1没有这样的元素,您可以执行简单的检查,例如

if (array.findIndex(...) == -1)
    // an element does not exist in the array

判断一个元素是否存在于数组中。

遵循您的逻辑并将其应用于您的示例,如果.findIndex()将返回null/undefined或抛出异常,那么您的示例用法

collection[items.findIndex("non-exist")]

.findIndex()会以与 if会返回相同的方式失败,-1因为既不是null也不undefined是数组索引,所以这一行会抛出一个我们需要处理的异常。如果.findIndex()当元素不存在时会抛出异常,那么......我们还必须处理异常。如您所见,无论如何您都必须处理异常。

返回而不是 null 或抛出异常的另一个原因-1是,在 Java 等语言中,不可能null从应该返回数字的方法返回。但是,.find()它旨在从数组中返回一个元素,该元素可能是任何东西,因此null如果您的数组不希望包含空值,则返回有点意义。在这种情况下,如果返回值为 ,则可以假设元素不存在null


推荐阅读