在javascript中返回键/值对

时间:2013-07-23 14:07:24

标签: javascript node.js

我正在编写一个javascript程序,它需要在键/值对中存储数字数组的原始值和doubled值。我是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
{ 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}

我在做什么错?

感谢。

3 个答案:

答案 0 :(得分:4)

您不能将表达式用作 Object 文字中的标签,也不会对其进行评估。而是切换到括号表示法。

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;

答案 1 :(得分:3)

您的目标是使用新属性丰富obj地图,以获得{2:4, 10:20,30:60,50:100, 100:200}。但是,不是这样做,而是用一个只有一个属性的对象替换obj变量的值。

更改

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);

答案 2 :(得分:0)

或者:

//Original array
var Num=[2,10,30,50,100];
//Object with original array keys with key double values
var obj = myFunc(Num);
//Print object
console.log(obj);


function myFunc(arr)
{
    var obj = {};
    for (var i in arr) obj[arr[i]] = arr[i] * 2;
    return obj;
}