js中Iterable对象和Array有什么区别?

264 阅读2分钟

"Iterable 对象和 Array 在 JavaScript 中有以下区别:

  1. Array 是一种特殊类型的对象,用于存储有序的数据集合,而 Iterable 对象是一种可以迭代的对象,它定义了迭代器方法 Symbol.iterator。

  2. Array 可以直接通过索引访问和修改元素,而 Iterable 对象需要使用迭代器方法才能访问和修改元素。

  3. Array 可以使用一系列的数组方法,比如 push、pop、slice 等,来操作和处理数组,而 Iterable 对象没有直接提供相应的方法,需要通过迭代器方法和其他操作来实现相应的功能。

  4. Array 的长度是可变的,可以通过改变数组的长度来增加或减少元素的个数,而 Iterable 对象的长度是固定的,不能直接改变。

  5. Array 可以使用 for 循环、forEach、map 等语法来遍历数组,而 Iterable 对象可以使用 for...of 循环来遍历。

  6. Array 可以使用下标方式访问元素,比如 arr[0],而 Iterable 对象不能直接使用下标访问元素。

  7. Array 可以通过字面量方式创建,比如 [1, 2, 3],而 Iterable 对象需要通过实现迭代器方法来创建,比如通过 Generator 函数来生成一个 Iterable 对象。

下面是一些示例代码,演示了 Iterable 对象和 Array 的区别:

// 创建一个 Array
const arr = [1, 2, 3];

// 使用索引访问和修改元素
console.log(arr[0]); // 输出 1
arr[1] = 4;
console.log(arr); // 输出 [1, 4, 3]

// 使用数组方法操作和处理数组
arr.push(5);
console.log(arr); // 输出 [1, 4, 3, 5]

// 创建一个 Iterable 对象
const iterable = {
  [Symbol.iterator]: function* () {
    yield 1;
    yield 2;
    yield 3;
  }
};

// 使用迭代器方法访问和修改元素
const iterator = iterable[Symbol.iterator]();
console.log(iterator.next().value); // 输出 1

// 使用 for...of 循环遍历 Iterable 对象
for (const item of iterable) {
  console.log(item);
}
// 输出:
// 1
// 2
// 3

总结来说,Iterable 对象和 Array 在使用方式、方法和遍历方式上有一些区别。Array 作为一种特殊的对象类型,提供了更多的操作和处理数组的方法,而 Iterable 对象作为一种可迭代的对象,需要通过迭代器方法和其他操作来实现相应的功能。"