2013-02-15 120 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];