2016-12-09 16 views
2

このmodule.export配列から値を取得しようとしていますが、できません。手伝って頂けますか?オブジェクトのmodule.exports配列から値を取得する

これはwords.js

module.exports = { 
    "word1": 'phrase1', 
    "word2": 'phrase2', 
    "word3": 'phrase3', 
    "word4": 'phrase4', 
    "word5": 'phrase5' 
}; 

であると私は今

var recipes = require('./words'); 

を呼んでいるmain.jsに、どのように私はmain.jsで使用するwords.jsの値を取得することができます

私は、乱数[3]を取得したい場合、それぞれの値[phrase4]を表示することを意味しますか?

これは私がやろうとしていたものですが、全く動作しませんでした。

var factIndex = Math.floor(Math.random() * recipes.length); 
var randomFact = recipes[factIndex]; 

助けてください。

ありがとうございます!

答えて

0

あなたは、キーObject.keys()のオブジェクト配列を使って、オブジェクトの配列からランダムなプロパティ値を取得できます。

words.js

module.exports = { 
    "word1": 'phrase1', 
    "word2": 'phrase2', 
    "word3": 'phrase3', 
    "word4": 'phrase4', 
    "word5": 'phrase5' 
}; 

main.js

var recipes = require('./words'), 
    recipesKeysArr = Object.keys(recipes), 
    factIndex = Math.floor(Math.random() * recipesKeysArr.length), 
    randomFact = recipes[recipesKeysArr[factIndex]]; 

デモ

var recipes = {"word1": 'phrase1',"word2": 'phrase2',"word3": 'phrase3',"word4": 'phrase4',"word5": 'phrase5'}, 
 
    recipesKeysArr = Object.keys(recipes), 
 
    factIndex = Math.floor(Math.random() * recipesKeysArr.length), 
 
    randomFact = recipes[recipesKeysArr[factIndex]]; 
 

 
console.log(randomFact);

+1

あなたは男です@ Yosvel-Quintero!どうもありがとうございました ! – spaceman

0

私が知る限り、module.exportsは関数用です。モジュールは、別のファイルで呼び出すことができる関数のコンテナです。

文字列のリストを格納し、その内容を繰り返し処理します。私はループを通すか、乱数を使って値にアクセスする配列を使うか、またはjsonファイルを作成することをお勧めします。

+0

ねえ@Alexanderルナの誰かがちょうど正確な答えを投稿しました。私が探していたものを見るためにそれをチェックしてください。注目してくれてありがとう! – spaceman

0

アレイのエクスポートを検討する必要があります。このような

module.exports = { 
    words: ['phrase1','phrase2','phrase3',...] 
}; 

し、それを使用します:例えばこのよう

var words = require('./path/to/file').words; 

//You can now loop it and you have a .length property 
words.map(function(word){ console.log(word) }) 
console.log(words.length) 

//getting a specific value is also done by the index: 
var myFirstPhrase = words[0]; 

たり、ファイルのみ、その単語のリストをエクスポートしている場合、あなたも、周囲のオブジェクトを取り除くとエクスポート得ることができます直接配列:

module.exports = ['phrase1','phrase2', ...]; 

そして、このようにそれをインポートします。

var words = require('./path/to/file'); 
+0

@JoschuaSchneiderありがとう、しかし誰かがちょうど正確な答えを投稿しました。これも素晴らしいですが、私は本当にオブジェクトの配列を使用する必要があります。 – spaceman

+0

問題はありませんが、オブジェクトの配列をエクスポートするためにコードを変更するだけで済みます。それはあなたにObject.keys()ループなどを保存します – JoschuaSchneider

関連する問題