JS中真正的数组和数组迭代器有什么区别

Mau*_*zi0 5 javascript arrays iterator

如果我们有: let myArr = [1, 2, 3, 4] ,如果我们有: myArr.values(); 我们将得到数组迭代器[1,2,3,4]。那么,数组和数组迭代器有什么区别呢?

Dav*_*vid 5

它们有不同的目的和功能:

\n\n
    \n
  • 数组是房间,迭代器是房间守卫,允许移动到下一个房间
  • \n
  • Iterator允许你遍历,例如可以调用next()
  • \n
  • 迭代器不允许您通过索引访问,例如 iterator[0]
  • \n
\n\n

在此输入图像描述

\n\n
const x = [1, 2, 3];\nconst iterator = x.values();\n\nconsole.log(x[1]);    //OK -> 2\nconsole.log(iterator[1]);  //   -> Undefined\n\nconsole.log(iterator.next()); //OK -> 1\nconsole.log(iterator.next()); //OK -> 2\nconsole.log(iterator.next()); //OK -> 3\nconsole.log(iterator.next()); //OK -> { value: undefined, done: true }\n//x.next();         //\xe2\x9c\x97Error: x.next is not a function\n
Run Code Online (Sandbox Code Playgroud)\n


Vik*_*ukh 2

当您将数组声明为 时let myArr = [1, 2, 3, 4],它会返回一个 Array 类型的对象。它具有与 Array 类型相关的所有属性和方法,例如 length、push、pop 等。

数组选项

另一方面,myArr.values()返回一个迭代器。迭代器与原始数组不同,因为它不具有数组的属性和方法。相反,作为一个迭代器,它有自己的方法next,例如 等,您可以使用它们来迭代值。

迭代器选项