为什么我的代码不能用于查找 JavaScript 中的数组中是否存在值

Why doesn't my code work for finding if a value exists in an array in JavaScript?

本文关键字:数组 存在 是否 JavaScript 代码 我的 不能 用于 查找 为什么      更新时间:2023-09-26

我试图查找数组中是否存在值,然后将其添加到第三个数组中。我正在使用JavaScript。

以下是我的声明:

var testArray1 = ["a", "b", "c", "d", "e"];
var testArray2 = [];

这是我的代码片段:

var x = testArray1.length;
var y = 0;
do {
    if(typeof testArray1[y] == 'a') {
    console.value += "A doesn't exist.";
    }
    else {
    console.value += "A does exist."
    }
    y++;
while (y < x);

出于某种原因(即使我输入(anything greater than 0)而不是x它总是说A does exist.谁能指出我的代码哪里有问题?

谢谢!

为什么我的代码无法查找 JavaScript 中的数组中是否存在值?

因为typeof x返回值的类型(根据规范)。 typeof testArray1[y]将始终为数组中的每个值返回"string",因为每个值都是一个字符串。它永远不会返回'a'.

看看查找项目是否在 JavaScript 数组中的最佳

方法?以及如何检查数组是否包含 JavaScript 中的对象?来学习如何测试数组中是否存在值。

您可以自己简化这种方式。

testArray1.indexOf('a')将返回数组中该字母的索引。如果它不在数组中,它将返回 -1

if(testArray1.indexOf('a') != -1){
     // it is in the array
}else{
     // it's not in the array
}

对我来说,我会像这样解决问题。

var _testArray1 = ["a", "b", "c", "d", "e"];
var _testArray2 = [];
for (var _i = 0; _i < _testArray1.length; _i++) {
    if (_testArray1[_i] === "a") {
        _testArray2.push(_testArray1[_i]);
    }
    // other logic;
};

通过这种方式,您可以将迭代计数变量保留在其自己的范围内,并将找到的数组结果附加到已声明的变量中。