对不起,这可能很容易,但我很难过。我正在尝试遍历此数组并注销每个值,但脚本正在注销一个字符串对象。
propertiesToSanitize = ["title", "description", "place_name"]
$.each propertiesToSanitize, ->
console.log this
转换为jQuery为
var propertiesToSanitize;
propertiesToSanitize = ["title", "description", "place_name"];
$.each(propertiesToSanitize, function() {
return console.log(this);
});
正在回归:
String
0: "t"
1: "i"
2: "t"
3: "l"
4: "e"
length: 5
知道为什么它会返回此而不仅仅是“标题”或任何其他值?提前感谢您的帮助。
答案 0 :(得分:8)
索引和每次迭代的值作为回调中的参数提供。
$.each(propertiesToSanitize, function(index,value) {
console.log(index + ':' + value);
});
答案 1 :(得分:2)
原因是因为this
在JavaScript中非常复杂。回调中的this
变量经常引用您不应该依赖的范围堆栈内的深层内容。使用jQuery's each
,“Javascript将始终将this
值包装为Object
,即使它是一个简单的字符串或数字值”,这就是您所看到的。
jQuery的each
将值作为第二个参数传递给回调。在您的JavaScript中,您可能想要这样:
$.each(propertiesToSanitize, function(idx, val) {
return console.log(idx + ":" + val);
});
但请注意,CoffeeScript非常能够在没有jQuery帮助的情况下循环遍历数组:
for propName in propertiesToSanitize
console.log propName