values()是数组原型方法,返回按索引顺序产出元素值的惰性迭代器,不修改原数组,等价于arr[Symbol.iterator](),常用于for...of、扩展运算符等场景。

JavaScript 中用 values() 获取数组值迭代器,直接调用即可,返回一个可遍历的迭代器对象,不修改原数组。
什么是 values() 迭代器
values() 是数组原型上的方法,返回一个 Array Iterator 对象,该迭代器按索引顺序逐个产出数组元素的值(不是索引,也不是键值对)。它和 for...of、扩展运算符、Array.from() 等配合使用最自然。
基本用法示例
调用方式很简单:
const iterator = arr.values();- 返回的
iterator不是数组,不能直接索引或调用数组方法 - 每次调用
iterator.next()返回{ value: x, done: false }形式的对象
例如:
立即学习“Java免费学习笔记(深入)”;
const arr = ['a', 'b', 'c'];const iter = arr.values();
console.log(iter.next()); // { value: 'a', done: false }
console.log(iter.next()); // { value: 'b', done: false }
console.log(iter.next()); // { value: 'c', done: false }
console.log(iter.next()); // { value: undefined, done: true }
常用配合方式
实际开发中很少手动调用 next(),更常用的是这些写法:
-
for...of 循环:直接遍历值
for (const val of arr.values()) { console.log(val); } -
扩展运算符:转成新数组(等价于浅拷贝)
const newArr = [...arr.values()]; // ['a', 'b', 'c'] -
Array.from():显式转为数组
const copy = Array.from(arr.values()); -
解构赋值:取前几个值
const [first, second] = arr.values(); // first='a', second='b'
注意点
values() 返回的迭代器是“惰性”的,只在真正读取时计算;它不响应数组后续的修改(除非是同一个迭代器被多次消费,但通常不建议重复使用已遍历完的迭代器)。
另外:arr.values() 和 arr[Symbol.iterator]() 完全等价,因为数组默认迭代器就是值迭代器。所以 for (const v of arr) 其实底层就调用了 values()。


















