2

数値の配列の元の値と 2 倍の値をキーと値のペアに格納する必要がある JavaScript プログラムを作成しています。私はjavascriptの初心者です。プログラムは次のとおりです。

var Num=[2,10,30,50,100];
var obj = {};

function my_arr(N)  
{
    original_num = N
    return original_num;

}



function doubling(N_doubled)
{
   doubled_number = my_arr(N_doubled);

   return doubled_number * 2;
}   


for(var i=0; i< Num.length; i++)
 {
    var original_value = my_arr(Num[i]);
    console.log(original_value);
    var doubled_value = doubling(Num[i]);
    obj = {original_value : doubled_value};
console.log(obj);
}

このプログラムは、関数で配列の内容を読み取り、別の関数で値を 2 倍にします。

私のプログラムは次の出力を生成します。

2
{ original_value: 4 }
10
{ original_value: 20 }
30
{ original_value: 60 }
50
{ original_value: 100 }
100
{ original_value: 200 }

私が探している出力は次のようなものです:

{2:4, 10:20,30:60,50:100, 100:200}

私がしている間違いは何ですか?

ありがとう。

4

3 に答える 3

6

あなたの目標は、objを取得するために新しいプロパティでマップを充実させることです{2:4, 10:20,30:60,50:100, 100:200}。しかし、それを行う代わりに、obj変数の値を 1 つのプロパティのみを持つオブジェクトに置き換えています。

変化する

obj = {original_value : doubled_value};

obj[original_value] = doubled_value;

そして、ループの最後で、ログを記録するだけです

console.log(obj);

完全なループ コードは次のとおりです。

for(var i=0; i< Num.length; i++) {
    var original_value = my_arr(Num[i]);
    var doubled_value = doubling(original_value);
    obj[original_value] = doubled_value;
}
console.log(obj);
于 2013-07-23T14:09:13.473 に答える
4

オブジェクトリテラルのラベルとして式を使用することはできません。式は評価されません。代わりに、括弧表記に切り替えます。

var original_value = my_arr(Num[i]),
    doubled_value = doubling(Num[i]);
obj = {}; // remove this line if you don't want object to be reset each iteration
obj[original_value] = doubled_value;
于 2013-07-23T14:09:50.043 に答える