数组 .each() 循环返回字符串而不是 jQuery 中的值

Array .each() loop returning string instead of value in jQuery

本文关键字:jQuery 字符串 each 循环 返回 数组      更新时间:2023-09-26

对不起,这可能很简单,但它让我难倒了。 我正在尝试遍历此数组并注销每个值,但脚本正在注销一个字符串对象。

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

知道为什么它返回这个而不仅仅是"标题"或任何其他值吗? 提前感谢任何帮助。

索引

和每次迭代的值作为参数在回调中提供。

$.each(propertiesToSanitize, function(index,value) {
    console.log(index + ':' + value);
});
原因是

this JavaScript 中非常复杂。 回调中的 this 变量通常引用作用域堆栈中不应依赖的内容。 使用jQuery的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