簡體   English   中英

在javascript中返回鍵/值對

[英]Returning key/value pair in javascript

我正在編寫一個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}

我在做什么錯?

謝謝。

您不能在對象文字中使用表達式作為標簽,它不會被求值。 而是改用括號表示法。

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;

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

要么:

//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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM