2013-07-23 31 views
0

我正在寫一個javascript程序,它需要將數字數組和原始值存儲在鍵/值對中的doubled值。我是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 
{ 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

您的目標是用新屬性豐富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); 
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; 
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; 
}