Wie überprüfe ich, ob ein Array in JavaScript einen Wert enthält?
P粉592085423
P粉592085423 2023-08-23 11:09:10
0
2
405
<p>Was ist der sauberste und effizienteste Weg, um herauszufinden, ob ein JavaScript-Array einen Wert enthält? </p> <p>Das ist die einzige Möglichkeit, die ich kenne:</p> <pre class="brush:php;toolbar:false;">function enthält(a, obj) { for (var i = 0; i < a.length; i++) { if (a[i] === obj) { return true; } } falsch zurückgeben; }</pre> <p>Gibt es einen besseren und saubereren Weg, dies zu erreichen? </p> <p>Dies hängt mit der Frage zum Stapelüberlauf zusammen. <em>Was ist der beste Weg, um Elemente in einem JavaScript-Array zu finden? </em> Diese eng verwandte Frage befasst sich mit der Suche nach Objekten in einem Array mithilfe von <code>indexOf</code>. </p>
P粉592085423
P粉592085423

Antworte allen(2)
P粉788571316

2019 年更新:这个答案来自 2008 年(11 岁了!),与现代 JS 的使用无关。承诺的性能改进是基于当时浏览器中完成的基准测试。它可能与现代 JS 执行上下文无关。如果您需要简单的解决方案,请寻找其他答案。如果您需要最佳性能,请在相关执行环境中为自己进行基准测试。

正如其他人所说,通过数组进行迭代可能是最好的方法,但它 已被证明,递减的 while 循环是 JavaScript 中最快的迭代方式。因此,您可能需要按如下方式重写代码:

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

当然,你也可以扩展Array原型:

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}

现在您可以简单地使用以下内容:

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false
P粉076987386

现代浏览器有 Array#includes,它完全做到了这一点,并且受到除 IE 之外的所有人的广泛支持

console.log(['joe', 'jane', 'mary'].includes('jane')); // true
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!