2013-02-15 173 views
-1

嗨,我有一個函數,我想返回函數參數與參數的附加值。因此,而不是寫這個:javascript更改函數參數變量名稱並返回其值

function(response) { 
    return response.links_1; 
} 

function(response) { 
    return response.links_2; 
} 

function(response) { 
    return response.links_3; 
} 

我想打一個for循環遍歷並增加數量,這樣的事情:

function(response) { 
    var counter = 3; 
    for(var i = 0; i < counter; i++) { 
     return response.links_ +i; 
    } 
} 

的重要組成部分,是response.link_切不可一個字符串! 然後它失去了功能參數值。

我試圖這樣做:

function(response) { 
    var i = 1, 
    resp = 'response.links_', 
    endResp = resp + i; 
    return endResp ; 
    } 
} 

和執行console.log(endResp);返回正確的字符串,但多數民衆贊成只是它,它的一個字符串..我想要變量 response.links_1的值不是字符串值response.links_1。

我剛纔想沒有任何運氣如下:(解析:只是一個骨幹方法)

parse: function(response) { 
    var counter = 3; 
for(var i = 0; i < counter; i++) { 
    return response[links_ + i]; 
} 
} 

歡迎任何幫助..

+0

你試過eval()嗎? – Kangkan 2013-02-15 08:56:59

+0

是的,我測試了eval()和相同的效果 - 但它可能只是,即時通訊不正確。 – 2013-02-15 08:57:41

+0

請解釋你究竟在做什麼!你不能在循環中「返回」以獲得「n」結果 - 在第一個「返回」中,整個函數將完成!這就是我們所說的「XY問題」 - 你在問一個非感性的問題,因爲在你做出設計錯誤的某個地方,所以你分析你認爲你必須做的事情是不正確的。 – Alnitak 2013-02-15 09:37:23

回答

1

要訪問JSON散列的密鑰,有兩種方法

// For the following object 
var obj = { 
    links_1: 'value1', 
    links_2: 'value1', 
    links_3: 'value1', 
}; 

// key1 can be accessed like 
console.log(obj.links_1); 

// Or 
console.log(obj['links_1']); 

所以,你的情況,你可以使用第二種方法

var counter = 3; 
for(var i = 0; i < counter; i++) { 
    return response['links_' + i]; 
} 

此外,您還可以通過

var counter = Object.keys(response).length; 

獲得總數而且,如果你不需要做任何事情都要用counter變量,response對象僅包含的鏈接,你可以使用像

for (link in response) { 
    return response[link]; 
} 
+0

不知道我明白了, 如果我這樣做你的方式我在控制檯中得到這個錯誤。 ReferenceError:links_未定義 我期望的參數是response.links_1 – 2013-02-15 09:28:53

+0

您的錯誤是哪種方式?在'for in循環中? – 2013-02-15 10:09:09

+0

我只需要將links_換成引號,然後就可以正常工作了。 return respose ['links_'+1]; – 2013-02-15 11:26:58

1

你應該嘗試的響應[「links_」 + 3]

1

對象引用操作.不工作動態生成的屬性名稱,所以你必須使用數組解除引用運算符[]來代替:

return response['links_' + i];