在 Java 中检查数组是否包含特定值

数组是按一定顺序排列的元素的系统集合。在内部,数组元素存储在连续的内存位置。

有多种方法可以搜索数组中的元素。不同的方法导致不同的时间和复杂性。下面列出了几种在数组中搜索元素的方法。

使用 Java 中的 array.contains() 方法检查数组是否包含特定值

在下面的代码块中,我们需要用一些预定义的值实例化一个数组 arr。现在,初始化我们要搜索的字符串。

Arrays 是一个具有各种操作数组方法的类。此类包含静态工厂方法和字段,它们在搜索和排序数组中的元素时非常有用。

asList() 方法是 Arrays 类的静态方法。它返回从参数中获取的指定数组的固定列表。

contains()List 接口中的一个方法。它接受一个元素作为参数,我们将这个参数与列表中存在的元素进行比较。如果指定的元素存在于列表中,则返回布尔值 true,在任何一种情况下都返回 false。如果指定元素的类型与此列表不兼容,则该方法抛出 ClassCastException;如果指定值为 null 且此列表不允许空值,则该方法抛出 NullPointerException

package findInList;
import java.util.Arrays;
public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        System.out.println(Arrays.asList(arr).contains(stringToSearch));
    }
}

上述程序的输出如下。

true

使用 Java 8 流检查数组包含特定值

在上面的代码块中,前两行与第一个代码中的类似。这里我们使用了 Arrays 类的 stream 方法来创建数组流。此方法返回一个以指定数组为源的顺序流。Stream 类有一个名为 anyMatch() 的函数。该方法将谓词作为其输入。

Predicate 是一个函数式接口,它接受一个参数函数并返回一个 Boolean 值。它包含一个 test(T t) 方法,用于评估给定参数的谓词。如果流的任何元素与提供的谓词匹配,则返回 true,否则返回 false 值。

package findInList;
import java.util.Arrays;
public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        System.out.println(Arrays.stream(arr).anyMatch(s -> s.equals(stringToSearch)));
    }
}

上述代码的输出与第一个代码相同。

使用简单的 for 循环检查数组是否包含特定值

在下面的代码块中,我们使用传统的 for 循环来迭代数组。for 循环在 expression1 中初始化,计数器值为 0。现在将计数器值与数组的长度进行比较。如果计数器变量小于定义数组的长度,则代码块内的语句将被执行。

for 块内,我们使用 String 类的 equals 方法比较数组的每个元素。如果状态评估为真,则使用 break 关键字来中断 for 循环的执行。如果没有找到,代码将被执行与数组中元素数量一样多的次数。

在循环之后,如果在列表中搜索到元素,则打印语句会将状态变量的值评估为,否则将打印 false 值。

package findInList;
public class FindAValueInArray {
    public static void main(String[] args) {
        String[] arr = new String[]{"1", "2", "3"};
        String stringToSearch = "2";
        boolean status = false;
        for (int i = 0; i < arr.length; i++) {
            status = arr[i].equals(stringToSearch);
            if (status) break;
        }
        System.out.println(status);
    }
}

输出结果也与第一段代码中给出的相同。

在 JavaScript 中检查数字是否在两个值之间

在本文中,我们将了解如何在 JavaScript 中检查一个数字是否介于两个值之间。我们将使用比较运算符和逻辑运算符来实现这一点。

我们可以将这些运算符与 JavaScript 中的 if 语句或三元运算符 ?: 一起使用。

例如,如果你有一个数字,比如说 25,并且你想检查这个数字是否在数字 10 和 50 的范围内。现在你可以看到数字 25 存在于数字 10 和 50 之间。

我们将看到如何在代码中实现它。

使用 JavaScript 中的比较和逻辑运算符检查数字是否介于两个值之间

JavaScript 中有多种类型的运算符,其中我们将只处理比较运算符和逻辑运算符。

比较运算符允许你比较两个操作数,如果条件满足则返回 true,否则返回 false。操作数可以是数字、字符串、逻辑或对象值。

比较运算符包括大于 >、小于 <、等于 ==、小于或等于 <= 等等。你可以阅读比较运算符的文档以获取比较运算符中可用运算符的完整列表。

在这些运算符中,我们将使用大于 > 和小于 < 运算符来检查两个值之间是否存在数字。

我们将使用的另一个运算符是逻辑运算符。

有三个逻辑运算符:逻辑 AND``&&、逻辑 OR``||和逻辑 NOT``!。我们将使用逻辑 AND``&&运算符。

这些运算符通常与布尔值一起使用。由于比较运算符提供了一个布尔值,我们可以使用逻辑运算符。

这些运算符可以与 JavaScript 中的 if 语句或三元运算符 ?: 一起使用。现在让我们看看如何在实践中实现这一点。

在 JavaScript 中将比较和逻辑运算符与 if 语句一起使用

首先,我们将看到如何在 if 语句中使用比较运算符和逻辑运算符,稍后我们将看到如何在三元运算符 ?:中使用它们。两者的逻辑和代码将保持不变,但语法会略有不同。

在这里,我们创建了一个名为 numberInBetween() 的函数,它将接受三个参数;最初的两个参数 startingNumberendingNumber 将是数字的范围,即 10 和 50。第三个参数 givenNumber 是我们要检查的数字本身,即 25 它是否在 10 和 50 范围内。

代码片段 – JavaScript:

function numberInBetween(startingNumber, endingNumber, givenNumber){
    if(givenNumber > startingNumber && givenNumber < endingNumber)
        console.log(`Given number ${givenNumber} falls between ${startingNumber} and ${endingNumber}`);
    else
        console.log("Given number does not fall between within the given range");
}
numberInBetween(10,50,25);

输出:

在 JavaScript 中检查数字是否在两个值之间

numberInBetween() 函数中,我们有 if 语句。在这里,我们检查 givenNumber 是否大于 startingNumber 以及 givenNumber 是否小于结束数字。

假设这两个语句出现在&& 运算符的左侧和右侧都返回 true。在这种情况下,整体表达式也将是 true,然后我们可以输入 if 语句并向控制台打印一条消息,表明给定数字介于两个值之间。

如果任何一个语句给出了 false 值,那么整个表达式的值将导致 false,在这种情况下,我们将输入 else 语句。

在 JavaScript 中将比较和逻辑运算符与三元运算符 ?: 结合使用

if 语句和三元运算符的工作方式相同。三元运算符的优点是语法简洁易读。

在使用三元运算符时,我们排除了 ifelse 关键字,而是使用 ?: 运算符。这 ? 用在条件之后,: 用在下面的两个语句中。

在这里,你也将获得相同的输出。

代码片段 – JavaScript:

function numberInBetween(startingNumber, endingNumber, givenNumber){
    (givenNumber > startingNumber && givenNumber < endingNumber) ?
        console.log(`Given number ${givenNumber} falls between ${startingNumber} and ${endingNumber}`)
    :
    console.log("Given number does not fall between within the given range");
}
numberInBetween(10,50,25);

在 JavaScript 中检查数字是否在两个值之间

如你所见,我们在 : 符号之前和之后都有一个控制台语句。因此,如果条件满足,则执行:符号左侧的语句,如果条件不满足,则执行:符号右侧的语句被执行。

如果需要在满足条件后执行单条语句,使用三元运算符;如果你需要在满足条件后执行多个语句,请使用 if 语句。

在 JavaScript 中检查数字是否为 NaN

使用 Number.isNaN() 方法检查数字是否为 NaN,例如 if (Number.isNaN(num)) {}。 如果提供的值为 NaN 并且具有数字类型,则 Number.isNaN() 方法将返回 true。

const num = 0 / 'test';
console.log(num); // ?️ NaN

if (Number.isNaN(num)) {
  // ?️ this runs only if NaN and type of number
  console.log('Number is NaN');
}

我们使用 Number.isNaN 方法来检查一个值是否具有数字类型并且是 NaN。

检查 NaN 时不应使用相等运算符,因为 NaN 不等于 Javascript 中的 NaN

// ❌ 不要这样做
console.log(Number.NaN === Number.NaN); // ?️ false

NaN 是 JavaScript 中唯一不等于自身的值。

Number.isNaN() 方法仅在满足以下条件时才返回 true

  • 该值的类型为 number
  • 值为 NaN

以下所有示例都返回 false。

console.log(Number.isNaN('string')); // ?️ false
console.log(Number.isNaN(undefined)); // ?️ false
console.log(Number.isNaN(null)); // ?️ false
console.log(Number.isNaN([])); // ?️ false
console.log(Number.isNaN({})); // ?️ false

这是一个示例,演示了 Number.isNaN 方法是如何实现的。

Number.isNaN = Number.isNaN || function isNaN(input) {
    return typeof input === 'number' && input !== input;
}

我们首先检查浏览器是否支持 Number.isNaN 方法。

如果不支持,我们通过将函数附加到 Number 对象的 isNaN 属性来实现它。

该函数检查所提供值的类型是否为 number 类型并且不等于自身。

NaN 是 JavaScript 中唯一不等于自身的值,因此这足以确定该值是否为 NaN。

另一种方法是使用较旧的 isNaN 方法。

如果提供给 isNaN 方法的参数不是数字类型,则该方法会在检查它是否为 NaN 之前将值强制为数字。

这与 Number.isNaN 方法不同,后者不会强制传入的值。

以下是使用 isNaN 方法的一些示例:

console.log(isNaN(0 / 0)); // ?️ true
console.log(isNaN('string')); // ?️ true
console.log(isNaN(undefined)); // ?️ true
console.log(isNaN({})); // ?️ true
console.log(isNaN(null)); // ?️ false
console.log(isNaN([])); // ?️ false

Number.isNaN 方法只会为 Number.isNaN(0 / 0) 返回 true。 所有其他示例都将返回 false

较旧的 isNaN 方法比 Number.isNaN 更不直观,因为它会在检查值是否为 NaN 之前尝试将非数字强制转换为数字。