gpt4 book ai didi

javascript - 我应该使用哪个 indexOf 函数?

转载 作者:行者123 更新时间:2023-11-29 18:27:57 26 4
gpt4 key购买 nike

我在代码库中遇到过添加 indexOf 函数的代码:

if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;

var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;

for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}

这与 Mozilla 推荐的实现不同 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf :

代码:

   if (!Array.prototype.indexOf) {  
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 0) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}

我应该改用 Mozilla 版本还是问题开头提到的版本就足够了?使用一个比另一个有优势吗?

最佳答案

它们都来自 MDN,但第一个版本来自 indexOf 页面的旧版本。较新版本是为了使实现与 ECMAScript 5 规范中发布的算法保持一致而进行的更新。考虑到所有这些,使用较新版本似乎是合理的。

这是 MDN 页面上进行更改的差异:

https://developer.mozilla.org/index.php?title=en/JavaScript/Reference/Global_Objects/Array/indexOf&action=diff&revision=32&diff=33

关于javascript - 我应该使用哪个 indexOf 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com