赢得't循环数组javascript
won't loop array javascript
为什么我不能访问我的数组?
function map(array){
for(i=0; i <=array.length; i++){
var location=array[i].location;
console.log("loc"+location);
var user = array[i].from_user;
console.log("user"+user);
var date = array[i].created_at;
var profile_img = array[i].profile_img;
var text = array[i].text;
var contentString = text;
//geocode(user,date, profile_img, text, contentString,location);
}
}
它让我对每个元素都没有定义。我想访问它并将变量传递给地理编码函数。数据结构:
array=[{user: a,user_id: b,date: c,profile_img: d,text: e,contentString: f,url:
g,location:o},{user: a,user_id: b,date: c,profile_img: d,text: e,contentString:
f,url:g,location:o},{user: a,user_id: b,date: c,profile_img: d,text:
e,contentString: f,url: g,location:s}];
不要担心价值观。。!
我忘了提我第一次发帖(提问)的时间了。数组的位置插入到上一个函数中,而数组不包括以前函数
调用函数时,请使用包含在数组文字中的对象文字结构,否则所有值都将作为未定义值返回。这就是你应该如何调用你的函数:
map([{ // array literal enclosing an object literal
location : 1,
from_user : 2,
created_at : 3,
profile_img: 4,
text : 5
}]);
此外,在您的循环中,更改:
for (i = 0; i <= array.length; i++ ) ...
至
for (var i = 0; i < array.length; i++) ...
如果你有一个预定义的数组,命名它并将其传递给如下函数:
map(arrayObj)
如果传入的array
的长度为0,则循环它的方式是尝试访问0ist元素,该元素将未定义。
然而,无论array
的内容如何,这一行总是会给您带来麻烦:
for(i=0; i <=array.length; i++)
当检查array
的length
属性时,它会告诉您数组中元素的数量。由于数组使用基于0的索引,因此每次使用此循环都会超出数组的边界。
var myArray = [1, 2, 3];
myArrary[0]; // This is 1
myArray[2]; // This is 3
由于您在0
和数组的长度之间循环,正好是3
,因此您尝试访问的最后一个元素将不存在。
myArray[3]; // Undefined
您需要检查i < array.length
而不是i <= array.length
。
您的代码很好。通过提供的输入和功能,您可以获得以下信息:
loco
userundefined
loco
userundefined
locs
userundefined
每个用户出现未定义的原因是:
var user = array[i].from_user;
console.log("user"+user);
您传入的对象没有from_user
属性,因此它自然会显示为未定义。也许你的意思是array[i].user_id
?
此外,正如唯美主义者所指出的,由于你检查长度的方式,你在数组的边界之外奔跑。改为:
for(var i = 0, n = array.length; i < n; i++) {
// your code in here
}
请注意,我在i
前面加了var
,这样它就不会变成隐式全局。另外,我声明了第二个变量n
,这样您只需要访问array.length
一次。这是常见的做法。
所以,把它们放在一起:
function map(array){
for(var i = 0, n = array.length; i < n; i++){
var location=array[i].location;
console.log("loc"+location);
var user = array[i].user_id;
console.log("user"+user);
var date = array[i].created_at;
var profile_img = array[i].profile_img;
var text = array[i].text;
var contentString = text;
//geocode(user,date, profile_img, text, contentString,location);
}
}
array=[{user: 'a',user_id: 'b',date: 'c',profile_img: 'd',text: 'e',contentString: 'f',url:
'g',location:'o'},{user: 'a',user_id: 'b',date: 'c',profile_img: 'd',text: 'e',contentString:
'f',url:'g',location:'o'},{user: 'a',user_id: 'b',date: 'c',profile_img: 'd',text:
'e',contentString: 'f',url: 'g',location:'s'}];
map(array);
请注意,我将您的对象属性更改为字符串,这是因为您没有为这些属性提供值,但您可能不想这样做。输出为:
loco
userb
loco
userb
locs
userb
一切都很好。如果您仍然没有定义location
,那么您的错误一定是您传递的对象的o
属性。
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何从某个位置顺时针和逆时针循环数组
- 赢得't循环数组javascript
- 通过循环数组内容
- 使用RegExp循环数组而不是for循环(Javascript)
- 如何在背景图像的循环数组中预加载图像
- 如何在循环数组内部推送变量值
- Javascript循环数组无限不起作用
- 如何循环数组
- 如何使用Handlebars循环数组对象和模板
- PHP同时循环数组数据显示到javascript中
- 如何使用上一个/下一个功能循环数组中的图像
- 如何循环数组并保持它们之间的索引增长
- Javascript循环数组以查找可被3整除的数字
- 以变量作为属性的循环数组
- 嵌套的“for”循环 - 数组未定义
- 在具有主干和车把的模型中循环数组
- 数组在 for 循环与第二个 for 循环数组 JavaScript 合并
- 对于javascript和jquery的循环数组问题
- 在循环数组 javascript 后替换对象属性值中的字符串