我想从$ .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);
});
我该怎么做才能解决这个问题?
答案 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] = {…};