遍历对象的正确方法是什么?

第556章

我一直都在用

for( x in object ){}

但是我才来

for( var x in object){}

我知道变种很重要

for( var i=0;i<10;i++){}

语句,它在递归函数中曾经使我难过,但是当用于x in时,这有关系吗?...

TJ人群

再说一遍var

用于x in时有关系吗?

是的总是重要声明你的变量。如果您不这样做,并且使用的是宽松模式,那么您就会成为“隐式全球性恐怖”的牺牲品(在严格模式下,这是一个很好的可检测错误。请使用严格模式。)这将在递归函数中以及在许多其他非递归情况中咬住您。

你不必声明它内部for构造,只要确保你的地方声明。


关于“迭代对象的正确方法是什么?”

有几种正确的方法。像Mathletics一样,我偏爱使用Object.keys(...).forEach(...)

var obj = {
  a: "ay",
  b: "bee",
  c: "see"
};
Object.keys(obj).forEach(function(key) {
  snippet.log(key + ": " + obj[key]);
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

注意,Object.keys它将仅查看对象自身的属性,而不是其原型的属性。

我喜欢它的原因是,它为我在每次“循环”迭代中所做的工作提供了一个很好的自包含范围。如果您担心这些回调的运行时成本,请不必担心


但是您也可以只使用for in循环。如果这样做,hasOwnProperty取决于是否要访问原型属性,您可能想要或可能不想包括

var proto = {
  a: "ay (proto)",
  b: "bee (proto)",
  c: "see (proto)",
  d: "dee (proto)"
};
var obj = Object.create(proto);
obj.a = "ay";
obj.b = "bee";
obj.c = "see";

// Includes prototype properties if not shadowed by the object's own
snippet.log("for-in without hasOwnProperty");
var key;
for (key in obj) {
  snippet.log(key + ": " + obj[key]);
}

// Does not include prototype properties
snippet.log("for-in using obj.hasOwnProperty");
for (key in obj) {
  if (obj.hasOwnProperty(key)) {
    snippet.log(key + ": " + obj[key]);
  }
}

// If you're feeling paranoid about `obj` having had
// `hasOwnProperty` overridden, you can use it from `Object.prototype`:
snippet.log("for-in using Object.prototype.hasOwnProperty");
for (key in obj) {
  // Does not include prototype properties
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
    snippet.log(key + ": " + obj[key]);
  }
}
// I've never needed to do that in the real world, though
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

只是不要for-in没有适当防护措施的情况下阵列上使用;有关此答案的原因(以及您的替代方案)的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在渲染中循环遍历此对象数组的正确方法是什么,反应

来自分类Dev

引用自身对象的正确方法是什么

来自分类Dev

遍历熊猫数据框并应用条件的正确方法是什么?

来自分类Dev

循环遍历 HTML 集合的正确方法是什么

来自分类Dev

键入接收对象并更新属性的方法的正确方法是什么?

来自分类Dev

正确的方法是什么?

来自分类Dev

使用autofac创建需要参数的对象的正确方法是什么?

来自分类Dev

从对象返回嵌套集合的正确方法是什么?

来自分类Dev

在emberjs中加载对象的正确方法是什么?

来自分类Dev

在QTreeView / QStandardItem上跟踪对象的正确方法是什么

来自分类Dev

用Java创建对象的正确方法是什么?

来自分类Dev

ColdFusion从Java返回查询对象的正确方法是什么?

来自分类Dev

存储对象的图形信息的正确方法是什么?

来自分类Dev

使用存储在矢量中的对象的正确方法是什么?

来自分类Dev

更新数组中对象的正确方法是什么?

来自分类Dev

从对象返回嵌套集合的正确方法是什么?

来自分类Dev

使用autofac创建需要参数的对象的正确方法是什么?

来自分类Dev

在Java中创建对象数组的正确方法是什么?

来自分类Dev

通过其DOM对象修改控件的正确方法是什么?

来自分类Dev

创建对象并将其推入向量的正确方法是什么?

来自分类Dev

在python中构造类,对象的正确方法是什么

来自分类Dev

使用重定向传递对象数组的正确方法是什么?

来自分类Dev

使用Ember Handlebars遍历数组时获取数组索引的正确方法是什么?

来自分类Dev

Bash:遍历目录和子目录(包括隐藏文件)的正确方法是什么?

来自分类Dev

遍历列表的最佳方法是什么

来自分类Dev

遍历DOM元素的最快方法是什么?

来自分类Dev

遍历DOM元素的最快方法是什么?

来自分类Dev

再次遍历脚本的最佳方法是什么?

来自分类Dev

创建对象时,JavaScript中使对象的成员函数调用的正确方法是什么?

Related 相关文章

  1. 1

    在渲染中循环遍历此对象数组的正确方法是什么,反应

  2. 2

    引用自身对象的正确方法是什么

  3. 3

    遍历熊猫数据框并应用条件的正确方法是什么?

  4. 4

    循环遍历 HTML 集合的正确方法是什么

  5. 5

    键入接收对象并更新属性的方法的正确方法是什么?

  6. 6

    正确的方法是什么?

  7. 7

    使用autofac创建需要参数的对象的正确方法是什么?

  8. 8

    从对象返回嵌套集合的正确方法是什么?

  9. 9

    在emberjs中加载对象的正确方法是什么?

  10. 10

    在QTreeView / QStandardItem上跟踪对象的正确方法是什么

  11. 11

    用Java创建对象的正确方法是什么?

  12. 12

    ColdFusion从Java返回查询对象的正确方法是什么?

  13. 13

    存储对象的图形信息的正确方法是什么?

  14. 14

    使用存储在矢量中的对象的正确方法是什么?

  15. 15

    更新数组中对象的正确方法是什么?

  16. 16

    从对象返回嵌套集合的正确方法是什么?

  17. 17

    使用autofac创建需要参数的对象的正确方法是什么?

  18. 18

    在Java中创建对象数组的正确方法是什么?

  19. 19

    通过其DOM对象修改控件的正确方法是什么?

  20. 20

    创建对象并将其推入向量的正确方法是什么?

  21. 21

    在python中构造类,对象的正确方法是什么

  22. 22

    使用重定向传递对象数组的正确方法是什么?

  23. 23

    使用Ember Handlebars遍历数组时获取数组索引的正确方法是什么?

  24. 24

    Bash:遍历目录和子目录(包括隐藏文件)的正确方法是什么?

  25. 25

    遍历列表的最佳方法是什么

  26. 26

    遍历DOM元素的最快方法是什么?

  27. 27

    遍历DOM元素的最快方法是什么?

  28. 28

    再次遍历脚本的最佳方法是什么?

  29. 29

    创建对象时,JavaScript中使对象的成员函数调用的正确方法是什么?

热门标签

归档