我有一个开始为空的数组 - var currentChatSessions = []
;
然后填充 - currentChatSessions[privateSessionID]=targetUser;
(这是一个字符串,例如'myName')
我有一个遍历数组的函数 -
function checkExisting(from){//check for existing chats with that user
var oldId=0;
//*
for(var index in currentChatSessions) {
console.log('checkExisting index: ' + index);
console.log('checkExisting data: ' + currentChatSessions[index]);
if (currentChatSessions[index] == from){
oldId=index;
console.log('check Existing: ' + oldId);
}
break;
}
//*/
console.log('check existing oldId: ' + oldId);
return oldId;
};
并将其记录到控制台 - checkExisting index: copy
和
checkExisting data: function (){var i=new Array();for(var I=0,l=this.length;I<l;I++){i[I]=this[I]}return i}
我知道字符串是作为变量传入的,因为我在其他地方调用它们,并返回正确的字符串。
为什么它会返回一个函数而不是一个字符串??
感谢帮助
最佳答案
for (var x in array)
将遍历设置为可枚举的数组上的所有属性,而不仅仅是数组元素。这可以包括方法,其值(value)将是可以解释您所看到的内容的代码。我猜你可能正在使用一些代码(库或代码)以一种使它们可枚举的方式将方法添加到你的数组。
您应该仅按从 0
到 .length - 1
的索引迭代数组。有几种方法可以做到这一点,但经典的方法是:
for (var i = 0; i < array.length; i++)
关于Javascript for 循环返回 "copy"作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257550/