19

数値の配列を作成し、各配列の内容を 2 倍にし、結果をキーと値のペアとして保存するプログラムを作成しています。以前に、配列をハードコーディングしていたので、すべて問題ありませんでした。

ここで、ロジックを少し変更しました。ユーザーからの入力を取得して、値を配列に格納します。

私の問題は、node.jsを使用してこれを行う方法を理解できないことです。npm install prompt を使用してプロンプト モジュールをインストールし、ドキュメントも確認しましたが、何も機能しません。

私はここで小さな間違いを犯していることを知っています。

これが私のコードです:

//Javascript program to read the content of array of numbers
//Double each element
//Storing the value in an object as key/value pair.

//var Num=[2,10,30,50,100]; //Array initialization

var Num = new Array();
var i;
var obj = {}; //Object initialization

function my_arr(N) { return N;} //Reads the contents of array


function doubling(N_doubled) //Doubles the content of array
{
   doubled_number = my_arr(N_doubled);   
   return doubled_number * 2;
}   

//outside function call
var prompt = require('prompt');

prompt.start();

while(i!== "QUIT")
{
    i = require('prompt');
    Num.push(i);
}
console.log(Num);

for(var i=0; i< Num.length; i++)
 {
    var original_value = my_arr(Num[i]); //storing the original values of array
    var doubled_value = doubling(Num[i]); //storing the content multiplied by two
    obj[original_value] = doubled_value; //object mapping
}

console.log(obj); //printing the final result as key/value pair

これで親切に助けてください、ありがとう。

4

4 に答える 4

45

さらに別のモジュールをインポートしたくない場合は、標準の nodejs プロセスを使用できます。

function prompt(question, callback) {
    var stdin = process.stdin,
        stdout = process.stdout;

    stdin.resume();
    stdout.write(question);

    stdin.once('data', function (data) {
        callback(data.toString().trim());
    });
}

使用事例

prompt('Whats your name?', function (input) {
    console.log(input);
    process.exit();
});
于 2015-08-28T17:10:32.783 に答える
9

Prompt は非同期であるため、非同期で使用する必要があります。

var prompt = require('prompt')
    , arr = [];

function getAnother() {
    prompt.get('number', function(err, result) {
        if (err) done();
        else {
            arr.push(parseInt(result.number, 10));
            getAnother();
        }
    })
}

function done() {
    console.log(arr);
}


prompt.start();
getAnother();

これにより、 +arrを押すまで番号がプッシュされ、その時点でが呼び出されます。CtrlCdone

于 2013-07-24T14:56:26.830 に答える