2015-10-31 48 views
1

我想用字符串match()过滤一些来自数据库的单词,但事件给出了数组形式。 我使用https://www.npmjs.com/package/node-mysql模块以便查询列名的数据库数据库数组以字符串转换分割|标志

con.query('SELECT name FROM droid_hastag_banned', function(error,result){ 

     for (var i = 0; i < result.length; i++) { 

      var arr = result[i].name; 

     } 

    }); 

目前查询输出是,如果我使用每个,否则结果[0]。名称;结果只有一行

RT 
@Alex_TNT 
@TopU3DAssets 
@LatestAssetBot 
@IndieLeverage 
@Parodossy 
@GameArtSleuth 

我需要有这种格式

.match(/^RT|RT|@TopU3DAssets|@LatestAssetBot|@IndieLeverage|@Parodossy|@GameArtSleuth|@Alex_TNT/) 

回答

3

你可以简单地连接结果:

result = [{"name":"@Alex_TNT"},{"name":"@TopU3DAssets"},{"name":"@LatestAssetBot"}, {"name":"@IndieLeverage"},{"name":"@Parodossy"},{"name":"@GameArtSleuth"}] 

result=result.map(function(x){ return x.name; }); 
exp = "/^RT|RT|"+result.join("|")+"/"; 
r = RegExp(exp); 
console.log(r.test("@Alex_TNT")); 

一个可能的实现是在这个Fiddle使用。 对Array.prototype.join的解释发现于MDNArray.prototype.map()解释ibd.


说明

你得到的结果中包含objectsarray的形式。 除了其他属性,产生的对象还有一个属性name。 为了只从对象中提取名称,我使用了Array.prototype.map()方法,它只不过是将函数应用于数组的每个成员:在这种情况下为return x.name。对象数组是mapped到一个字符串数组。

exp是简单字符串连接组合使用Array.prototype.join()得到一个形式为"xx|xx|xx"的字符串。

没有参与魔术)

+0

这是结果 -/^ RT | RT | [对象的对象] | [对象的对象] | [对象的对象] | [对象的对象] | [对象的对象] | [对象对象] | [对象对象] | [对象对象]/- 这就是为什么我使用索引 –

+0

我的不好;)你必须连接'.name'当然;) –

+0

TypeError:无法读取未定义的属性'连接'。我尝试过之前的join()方法,它做了同样的错误 –