2

所以我有一个看起来像这样的 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 线程创建的变量。

4

3 回答 3

1

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

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

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

}
于 2012-06-27T07:38:08.397 回答
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

}
于 2012-06-27T07:38:49.163 回答
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字符串末尾没有尾随的“,”(除非这是您想要的)。

于 2012-06-27T07:40:37.413 回答