【问题标题】:if statement == at least one of multiple optionsif 语句 == 多个选项中的至少一个
【发布时间】:2016-08-02 17:36:45
【问题描述】:

我正在尝试找出如何编写一个检查 x == (at least one of many vars) 是否为 if 语句的正确语法

我有一个例子,我想达到什么......

var path = require('path')
var fs = require('fs')
var file1 = './frank.txt'
var file2 = './jasmine.html'
var file3 = './finnigan.jpg'

if (fs.statSync(file2).isFile && path.extname(file2) == ['.txt' || '.html']) {
  console.log('true')
} else {
  console.log('failure')
}

我知道后面的语法是 && 很奇怪,但是对于这种情况,正确的语法是什么?

【问题讨论】:

  • 方法有很多。第一个是(path.extname(file2) == '.txt' || path.extname(file2) == '.html'),但出于显而易见的原因,这很糟糕。 ['.txt','.html'].indexOf(path.extname(file2)) > -1 有效。就像path.extname(file2).match(/\.(?:txt|html)$/)...
  • 检查this它使用lodash模块来促进这种工作

标签: javascript node.js


【解决方案1】:

可以通过元素检查某个索引是否存在:

if (fs.statSync(file2).isFile && ['.txt', '.html'].indexOf(path.extname(file2)) > -1) {
  console.log('true');
} 
else {
  console.log('failure');
}

【讨论】:

  • 您的意思是> -1>= 0,对吗?因为如果第一个元素匹配,indexOf 为零。
  • 这不会捕获第一个元素。你想要>=
【解决方案2】:

你也可以使用这样的正则表达式

var path = require('path');
var fs = require('fs');
var file1 = './frank.txt';
var file2 = './jasmine.html';
var file3 = './finnigan.jpg';
var extRegex = new RegExp(/^(\.txt|\.html)$/);

if ( fs.statSync(file2).isFile && extRegex.test( path.extname(file2) ) ) {
  console.log('true');
} else {
  console.log('failure');
}

【讨论】:

    【解决方案3】:

    如果我让你正确,那么你可以在你的情况下使用 Jquery inArray 函数。

    var arr=[ './frank.txt', './frank.html', './frank.jpg', './frank.csv' ] ;
    
    if( $.inArray( 'file.exe',arr )!=-1)
    {
         console.log('true');
    }
    else
    { 
         console.log('false');
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多