在node.js中找到数组上字符串的最佳方法是什么?

时间:2016-01-24 12:49:57

标签: arrays node.js string find indexof

直到jsfidlle我的代码,问了同样的问题,但是在java中。 我有一个在cmd上运行的node.js脚本。 我想找到用户在命令末尾给我的字符串(使用procces.argv [2]),是否包含在我的数组中 我怎么能这样做?

link - https://jsfiddle.net/mj4761dk/
希望有人可以帮助我。 谢谢

eyal

3 个答案:

答案 0 :(得分:15)

如果我理解正确,您正在寻找阵列中的字符串。

执行此操作的一种简单方法是使用indexOf()函数,该函数为您提供找到字符串的索引,或者在找不到字符串时返回-1。

示例:

var arr = ['example','foo','bar'];
var str = 'foo';
arr.indexOf(str); //returns 1, because arr[1] == 'foo'

str = 'whatever';
arr.indexOf(str); // returns -1 

编辑19/10/2017

ES6的介绍给了我们: arr.includes('str') //true/false

答案 1 :(得分:2)

在NodeJS中,如果您希望匹配字符串数组中的部分字符串,可以尝试这种方法:

const strings = ['dogcat', 'catfish']
const matchOn = 'dog'

let matches = strings.filter(s => s.includes(matchOn))

console.log(matches) // ['dogcat']

编辑: 按要求如何在提供的上下文小提琴中使用

var fs = require('fs');                                           
var location = process.cwd();                                     


var files = getFiles('c:/Program Files/nodejs');                                 
var matches = searchStringInArray('c:/Program Files/nodejs/node_modules/npm/bin', files);


console.log(matches);                                             

function getFiles (dir, files_){                                  
    var str = process.argv[2];                                    
    files_ = files_ || [];                                        
    var files = fs.readdirSync(dir);                              
    for (var i in files){                                         
        var name = dir + '/' + files[i];                          
        if (fs.statSync(name).isDirectory()){                     
            getFiles(name, files_);                               
        } else {                                                  
            files_.push(name);                                    
        }                                                         
    }                                                             

    return files_;                                                
}                                                                 

function searchStringInArray (find, files_) {                     
    return files_.filter(s => s.includes(find))                   

}                                                                 

答案 2 :(得分:1)

另一种方法是使用some

players = [];

const found = this.players.some(player => player === playerAddress);

if (found) {
    // action
} else {
    // action
}