0

我想将元素从 $.each 循环更新到数组中,但它错误地将它们加载到数组中。它将所有用户放入一个元素中,将所有日期放入一个元素中,依此类推。代码如下:

    var array = [{
      user: "",
      user_id: "",
      date: "",
      profile_img: "",
      text: "",
      contentString: "",
      url: "",
      location: ""
    }];
    $.getJSON("http://search.twitter.com/search.json?q=%23euronews&rpp=5&include_entities=true&result_type=mixed&callback=?",

    function (data) {
      $.each(data.results, function (i, item) {
        var user = item.from_user;
        var user_id = item.from_user_id;
        var date = item.created_at;
        var profile_img = item.profile_image_url;
        var text = item.text;
        var contentString = text;
        var url = (item.entities.urls.length > 0 ? item.entities.urls[0].url : '');
       console.log(i);
       array.user=user;
       array.user_id=user_id;
       array.date=date;
       array.profile_img=profile_img;
       array.text=text;
       array.contentString=contentString;
       array.url=url;

      });
      console.log(array);
       });

我该怎么做才能解决这个问题?

4

2 回答 2

0

您不应该将更新代码放在该for ... in循环中。“i”值被传递到您的函数中。不需要for循环。

因此,只需摆脱围绕array[i]作业的循环。

此外,分配是错误的:

 array[i].user = user;
 array[i].user_id = user_id;

等等

于 2012-08-17T14:00:49.840 回答
0

似乎您想将用户添加到array. 使用.push()方法和对象字面量,而不是覆盖数组中已存在的所有对象的属性:

$.each(data.results, function (i, item) {
    array.push( {
        user: item.from_user,
        user_id: item.from_user_id,
        date: item.created_at,
        profile_img: item.profile_image_url,
        text: item.text,
        contentString: text,
        url: item.entities.urls.length > 0 ? item.entities.urls[0].url : ''
    } );
});
console.log(array);

要通过覆盖现有项目来更新数组,您可能需要使用

   array[i] = {…};
于 2012-08-17T14:34:15.530 回答