Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 在函数中使用.includes方法_Javascript - Fatal编程技术网

Javascript 在函数中使用.includes方法

Javascript 在函数中使用.includes方法,javascript,Javascript,我有一个对象jsonRes[0],其中包含需要根据条件删除的值。以下操作用于删除字符串化对象中的null、缺失值和等于零的值: function replacer(key, value) { // Filtering out properties if (value === null || value === 0 || value === "") { return undefined; } r

我有一个对象
jsonRes[0]
,其中包含需要根据条件删除的值。以下操作用于删除字符串化对象中的
null
、缺失值和等于零的值:

function replacer(key, value) {
          // Filtering out properties
          if (value === null || value === 0 || value === "") {
            return undefined;
          }
          return value;
        } 

JSON.stringify(jsonRes[0], replacer, "\t")
但是,当我使用
includes
方法添加条件时,我收到一个错误:

function replacer(key, value) {
          // Filtering out properties
          if (value === null || value === 0 || value === "" || value.includes("$")) {
            return undefined;
          }
          return value;
        } 


Uncaught TypeError: value.includes is not a function

为什么会出现这种情况?是否有解决办法

我实际上不确定名为
value
的变量是什么类型的,但无论如何,
Array.prototype.includes
String.prototype.includes
仅在ES6中可用。您需要将
babel polyfill
或任何其他捆绑模块(如
rollup.js
webpack
)与babel或类似模块一起使用
includes
功能。

您可以使用代替,因为它在ES6中可用,在IE中根本不受支持

typeof value == "string" && value.indexOf('$') > -1

另请注意,如果
不是字符串类型,它仍将引发一个错误
布尔值
数字
不支持该方法。您可以使用验证
是否为字符串。

还有一种可能性:可能您的
不是字符串类型的对象

(typeof(value)=“string”和&value.includes(“$”)
.includes()
API是
字符串和
数组
数据类型的一部分

因此,错误试图告诉您的是变量
value
的值(例如整数或对象)没有属性
。includes

你可以做像这样的检查

  • typeof a_string==“string”
  • 数组的数组实例
  • .includes()
    api之前,可以防止出现这种情况

    显然,这将使你的if声明相当丑陋,因为你有检查的数量

    基于代码的编写方式,我怀疑您对检查“字符串”比检查数组更感兴趣。因此,要小心数组。如果是数组,则代码可能无法正常工作

    无论如何,这里是你的代码的折射版本

    函数替换器(键、值){
    //过滤掉属性
    如果(!value | | typeof value==“string”&&value.includes(“$”){
    返回未定义;
    }
    返回值;
    } 
    log(“NULL返回:”+replacer('test',NULL));
    log(“$Test返回:”+replacer('Test','$Test');
    
    log(“Blah返回:”+replacer('test','Blah')我解决了这个错误,当我将“includes”应用到“window.location”值时,通过附加“.toString();”得到了这个错误

    var requestUrl=window.location.toString()

    if(requestUrl.includes(urlBase+“#”)){

    如果该值未定义,则表示它没有包含函数。如果查看包含()的文档,大多数浏览器都不支持此属性。在使用toString()将属性转换为字符串后,可以使用广泛支持的indexOf():如果
    是一个数字,(非数组)对象或布尔值,它不会有
    .includes
    方法?可能您的意思是编写类似
    typeof value==“string”和&value.includes(“$”
    )的内容。此答案应该是已接受答案的第二部分。'另请注意…'