Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript有包含函数吗?_Javascript - Fatal编程技术网

Javascript有包含函数吗?

Javascript有包含函数吗?,javascript,Javascript,我不确定它会不会。一些网站显示在javascript中使用包含,但当我尝试时,它不起作用 我有 var userAgent = navigator.userAgent.split(';'); if (userAgent.contains("msie7") == true) {...} 我试图使用useragent来确定用户是否在兼容模式下运行IE8。所以我想检查一下msie7和trident 4.0的userAgenet 那么我如何检查这个数组呢?在ES v3(大多数JS实现)中没有本机的a

我不确定它会不会。一些网站显示在javascript中使用包含,但当我尝试时,它不起作用

我有

var userAgent = navigator.userAgent.split(';');

if (userAgent.contains("msie7") == true) {...}
我试图使用useragent来确定用户是否在兼容模式下运行IE8。所以我想检查一下msie7和trident 4.0的userAgenet


那么我如何检查这个数组呢?

在ES v3(大多数JS实现)中没有本机的
array.prototype.contains
。Mozilla/Firefox和其他选择采用它的现代JS引擎中都有Array.prototype.indexOf

您可以使用下面的代码在没有它的浏览器/引擎上实现它:


然后在分配它之后,您可以执行
Array.prototype.contains=function{返回this.indexOf(s)!=-1}

在ES v3(大多数JS实现)中没有本机
Array.prototype.contains
。Mozilla/Firefox和其他选择采用它的现代JS引擎中都有Array.prototype.indexOf

您可以使用下面的代码在没有它的浏览器/引擎上实现它:


然后在分配它之后,您可以执行
Array.prototype.contains=function{返回this.indexOf(s)!=-1}

您可以使用
indexOf
获取数组中包含您要查找的元素的索引。因此,您可以像这样重写
if
语句:

if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
    // ...

请注意,IE(至少IE6)不支持数组的
indexOf
(但它可以处理字符串),但您可以编写自己的版本:

if (typeof Array.prototype.indexOf == 'undefined')
  Array.prototype.indexOf = function(e) {
    for (var i = 0; i < this.length; i++)
      if (this[i] == e)
        return i;
    return -1;
  }
if(typeof Array.prototype.indexOf=='undefined')
Array.prototype.indexOf=函数(e){
for(var i=0;i
您可以使用
indexOf
获取数组中包含要查找元素的索引。因此,您可以像这样重写
if
语句:

if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
    // ...

请注意,IE(至少IE6)不支持数组的
indexOf
(但它可以处理字符串),但您可以编写自己的版本:

if (typeof Array.prototype.indexOf == 'undefined')
  Array.prototype.indexOf = function(e) {
    for (var i = 0; i < this.length; i++)
      if (this[i] == e)
        return i;
    return -1;
  }
if(typeof Array.prototype.indexOf=='undefined')
Array.prototype.indexOf=函数(e){
for(var i=0;i
您可以随时推出自己的contains(),它可以在所有浏览器上处理数组对象

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
       if (this[i] === obj) {
          return true;
        } 
    }
    return false;
}
警告:“扩展javascript数组对象是一个非常糟糕的主意,因为在for-in循环中引入了新属性(自定义方法),这可能会破坏现有脚本。”

更好地使用主流库(如jQuery)提供的函数


关于此主题的完整讨论:

您可以随时推出自己的contains(),它将在所有浏览器上处理数组对象

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
       if (this[i] === obj) {
          return true;
        } 
    }
    return false;
}
警告:“扩展javascript数组对象是一个非常糟糕的主意,因为在for-in循环中引入了新属性(自定义方法),这可能会破坏现有脚本。”

更好地使用主流库(如jQuery)提供的函数

关于此主题的完整讨论:

是一个可以帮助您编写更好的跨浏览器javascript的库。它使用方便的方法(如“contains”)扩展javascript基本类型(、、等)

或者,您可以自己实现它,如其他答案所示。

是一个库,可以帮助您编写更好的跨浏览器javascript。它使用方便的方法(如“contains”)扩展javascript基本类型(、、等)


或者,您可以自己实现它,如其他答案所示。

您可以跳过数组,直接测试字符串,如下所示:

if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
    // ...

这里有一些。

您可以跳过数组,直接测试字符串,如下所示:

if (userAgent.indexOf("msie7") > -1) {...}
if (navigator.userAgent.indexOf('msie') != -1)
    // ...

这里有一些。

最后我发现jquery有一个名为inary的方法,我使用了这个方法。所以我不必担心兼容性问题。

最后我发现jquery有一个名为inary的方法,我使用了这个方法。因此,我不必担心兼容性问题。

注意,他进行了
拆分
,因此
userAgent
是一个数组,而不是字符串。在这两种情况下,
indexOf
都会起作用。我如何才能更清楚地说明这一点?我尝试了userAgent[],但它不喜欢这样。我应该称之为userAgentArray(我认为在C#中这是一种糟糕的做法,但不确定javascript)注意,他进行了
拆分
,因此
userAgent
是一个数组,而不是一个字符串。在这两种情况下,
indexOf
都会起作用。我如何才能更清楚地说明这一点?我尝试了userAgent[],但它不喜欢这样。我应该称之为userAgentArray(我认为在C#中这是一种不好的做法,但不确定javascript),我可能会检查它是否为null。我不支持IE 6。我刚刚提出了一个拒绝标志。IE6、7或8都不支持该方法,它最近在IE9平台预览上实现。我会推荐符合标准的版本。它可以使用第二个
fromIndex
参数,使用严格比较运算符(
==
),等等……我可能会检查它是否为空。我不支持IE 6。我刚刚提出了一个拒绝标志。IE6、7或8都不支持该方法,它最近在IE9平台预览上实现。我会推荐符合标准的版本。它可以在index参数中使用第二个
,使用严格的比较运算符(
==
)等…“警告”-无论如何不在in
中使用
的一个很好的理由,因为许多库会在您不知道的情况下扩展原型。“警告”-无论如何不在in
中使用
的一个很好的理由,因为许多库会在您不知道的情况下扩展原型。请尝试此链接尝试此链接