2016-02-20 77 views
0

我有一個咖啡腳本文件,其中包含以下數據。我想創建一個字符串數組,它將以下數據存儲爲鍵:值對。如何從文件和存儲鍵讀取:字符串數組中的值對?

abTests: 
    productRanking: 
     version: 4 
     groups: [ 
     ratio: 
      default: 1 
      us: 0.90 
      me: 0.0 
     value: "LessPopularityEPC" 
     , 
     ratio: 
      default: 0 
      us: 0.1 
     value: "CtrEpcJob" 
     , 
     ratio: 
      default: 0 
      me: 1.0 
     value: "RandomPerVisitor" 
     ] 
    sabt: 
     version: 1 
     groups: [ 
     ratio: 
      default: 1 
      us: 0.90 
     value: "default" 
     , 
     ratio: 
      default: 0 
      us: 0.05 
     value: "colorBoost" 
     , 
     ratio: 
      default: 0 
      us: 0.05 
     value: "colorPriority" 
     , 
     ratio: 
      default: 0 
      us: 0 
     value: "noColorClause" 
     ] 

我要在以下格式

productRanking:LessPopularityEPC 
productRanking:CtrEpcJob 
productRanking:RandomPerVisitor 
sabt:default 
sabt:colorboost 
sabt:colorPriority 
sabt:nocolorClause 

創建這些數據的字符串數組有沒有什麼辦法來解決這個問題?

+1

,而不是試圖在Ruby中解析的CoffeeScript,你爲什麼不這樣做的CoffeeScript的?或者在具有CSON模塊之一的Node.js中? –

+0

@Jordan爲了自動執行這些測試,我必須生成key:value對的所有可能組合。我只需要在Ruby中獲得解決方案。感謝您的輸入。 –

+0

爲什麼你需要一個純Ruby解決方案?如果你在Rails中工作,那麼你幾乎肯定可以訪問JavaScript解釋器,那麼爲什麼不使用它呢?正確解析CSON可能比你想象的更難。 –

回答

1

如果字符串數組你的意思是這個

['productRanking:LessPopularityEPC', 'productRanking:CtrEpcJob', 'productRanking:RandomPerVisitor'] 

你可以做到這一點與下面的CoffeeScript代碼

data = abTests: 
    ... 

array = [] 
for testName,tests of data['abTests'] 
    for categoryName,categoryElems of tests['groups'] 
    array.push (testName + ':' + categoryElems['value']) 

console.log array 
#=> ['productRanking:LessPopularityEPC', 'productRanking:CtrEpcJob', 'productRanking:RandomPerVisitor'] 
+0

謝謝你的解決方案。欣賞它。但是,我有這樣的多個鍵。我的意思是說我的數據進一步鱗片像這樣 'productRanking:LessPopularityEPC productRanking:CtrEpcJob productRanking:RandomPerVisitor sabt:HelloWorld的 sabt:汕頭超聲電子 的mouseenter:真 的mouseenter:FALSE' 有什麼辦法,將取鑰匙 ? –

+0

我已經添加了我需要的文件和解決方案的更多數據。這將是偉大的,如果你可以幫助我的那 –

+0

我正在調查它 – MilesStanfield

相關問題