在node.js中查找数组上的string的最佳方法是什么?

至于jsfidlle我的代码,问了同样的问题yestrday,但在Java。 我有一个在cmd上运行的node.js脚本。 我想find如果string,用户给我的命令(与procces.argv [2]),包括在我的数组如何可以做到这一点?

link - https://jsfiddle.net/mj4761dk/ 

希望可以有人帮帮我。 谢谢

的Eyal

如果我理解正确,你正在寻找一个数组中的string。

一个简单的方法是使用indexOf()函数,该函数为您提供findstring的索引,或者在找不到string时返回-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

在NodeJS中,如果你想要匹配一个string数组中的部分string,你可以试试这个方法:

 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)) }