2015-10-31 47 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()方法,它做了同樣的錯誤 –