使用javascript动态更新数组元素

时间:2012-08-17 13:56:06

标签: javascript

我想从$ .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);
       });

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

2 个答案:

答案 0 :(得分:0)

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

所以只需摆脱array[i]作业周围的循环。

此外,作业有误:

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

答案 1 :(得分: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] = {…};