【问题标题】:What is the @Contains equivalent in JavaScript?JavaScript 中的 @Contains 等价物是什么?
【发布时间】:2019-08-09 18:30:07
【问题描述】:

我正在尝试查看我的 item.data.file(这是我的文件名)是否以任何扩展名结尾,如果是,则执行该行。

在 lotus notes 中,有 @Contains 所以我会这样做,但是有人知道如何在 javascript 中做到这一点吗?我不是在寻找索引,也不是我只想执行该行的任何布尔值。

var goodExtensions = ["jpg,", "gif", "bmp", "png"];

if(image.data.file.includes(goodExtensions)
{
   //execute statement
}

我的代码在我的 if 语句中出现错误。

【问题讨论】:

  • 你反其道而行之。从您的文件中提取扩展名,并检查goodExtensions 是否包含您的扩展名。
  • 由于您没有提供具体的错误消息,我猜想指出您缺少右括号 ()),这可能会引发错误。除此之外,我们不能说includes() 是否在此处正确实现,因为我们不知道image 及其相关属性实际代表什么。您还应该重新考虑这样的设计:如果我正确解释了您的尝试,您似乎将扫描扩展名的完整文件名,这将允许文件名,即badFile.gif.js
  • JS 有includes,但既然你想匹配扩展我怀疑这会有用,你需要使用正则表达式
  • 那行得通,我错过了另一个 ')',抱歉,我使用的 IDE 没有显示语法错误。
  • if(image.data.file.includes(goodExtensions) 中缺少右括号

标签: javascript lotus-formula


【解决方案1】:

您最好的选择是Array.indexOf() 方法:

if (goodExtensions.indexOf(extension) !== -1) {
    // the extension is on the list, do something
}

要从文件名中找到扩展名,应该可以这样:

var extension = filename.split(".").pop();

【讨论】:

  • 为什么要索引?为什么不includes?这里 op 想要布尔值,includes 给出布尔值,而 indexOf 你需要将其更改为布尔值,OP 声明了这个I'm not looking for the index, or any boolean i just want to execute the line.
  • 因为我不知道这个方法存在!而且,经过检查,它看起来相当新,以至于 MSIE 不支持它......
【解决方案2】:

在 JS 中,数组有 .include 方法来检查数组是否包含参数。例如。 [1,2,3].includes(2).

let goodExtensions = ["jpg,", "gif", "bmp", "png"];

let isGoodFileName = fileName => {
  let extension = (fileName.match(/\.(.*)$/) || [])[1];
  return goodExtensions.includes(extension);
}

console.log(isGoodFileName('good.gif')); // true
console.log(isGoodFileName('bad.txt')); // false

【讨论】:

    【解决方案3】:

    JS 有一个名为 includes 的方法,它等同于包含,但是由于这里你试图匹配文件扩展名,我认为你不能单独做到 includes,你需要在 . 上进行拆分并使用您的良好扩展测试和最后拆分元素或使用正则表达式

    如果您愿意了解如何使用正则表达式,您可以动态构建具有所有良好扩展名的正则表达式并针对文件名进行测试

    let goodExtensions = ["jpg", "gif", "bmp", "png"];
    let pattern = `\\.${goodExtensions.join('|')}$`
    let reg = new RegExp(pattern,'i')
    
    let isGoodFileName = fileName => {
      return reg.test(fileName)
    }
    
    console.log(isGoodFileName('good.gif')); // true
    console.log(isGoodFileName('bad.txt')); // false

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 2014-12-06
      • 2011-04-23
      • 2013-07-01
      • 1970-01-01
      相关资源
      最近更新 更多