需要在每个循环中访问jQuery之外的变量

时间:2012-06-27 07:35:22

标签: javascript jquery

所以我有一个看起来像这样的json字符串

var jsonString = '[{"name":"John Smith","uid":1234,{"name":"Susie Something","uid":4567"}]';

我正在创建一个函数,它将返回所有用逗号分隔的UID。例如: 1234,4567。

我现在做的是这个

function getUIDS(json){
var uids = '';
parsed = JSON.parse(json);

$.each(friends, function() {
        uids = uids + this.uid.toString() + ',';
 });
 reuturn uids;

}

然而,没有任何回报。如何在jquery线程之外访问由jquery线程创建的变量。

3 个答案:

答案 0 :(得分:1)

通过解析而不是朋友,如果这是完整的代码并且朋友没有在任何地方定义

function getUIDS(json){
var uids = '';
parsed = JSON.parse(json);

$.each(parsed, function() {
        uids = uids + this.uid.toString() + ',';
 });
 reuturn uids;

}

答案 1 :(得分:1)

尝试:

function getUIDS(json){
  var uids = [];
  var friends = JSON.parse(json);

  $.each(friends, function(i) {
     uids.push(friends[i].uid);
  });

  return uids.join(',');
}

您的代码中的问题是:(请参阅代码注释)

function getUIDS(json){
var uids = '';
parsed = JSON.parse(json);

$.each(friends, function() { // using friends instead of parsed
        uids = uids + this.uid.toString() + ','; // using this here
 });
 reuturn uids; // spelling mistake for return keyword

}

答案 2 :(得分:1)

尝试修复你的json:

var jsonString = '[{"name":"John Smith","uid":1234},{"name":"Susie Something","uid":4567"}]';

稍微改变你的代码:

function getUIDS(json) {
   var uids = '',
       friends = JSON.parse(json);

   $.each(friends, function() {
       uids += this.uid + ',';
   });

   return uids;
}

重要的部分正在循环friends并正确拼写return

您还应该考虑按照某人的建议使用join。这样可以确保你的uids字符串末尾没有“,”(除非那是你想要的)。