跳到主要内容

JavaScript 数组的 values() 方法详解

values() 方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的值。

示例

let languages = ["JavaScript", "Java", "C++"];

// 返回包含值的数组迭代器对象
let iteratorObject = languages.values();

// 遍历迭代器
for (let value of iteratorObject) {
console.log(value);
}

// 输出:
// JavaScript
// Java
// C++

values() 语法

values() 方法的语法为:

arr.values();

这里的 arr 是一个数组。

values() 参数

values() 方法不接受任何参数。

values() 返回值

  • 返回一个新的 Array 迭代器对象。

备注value() 方法不会改变原始数组。

示例 1:使用 values() 方法

let languages = ["A", "B", "C"];

// 返回包含 languages 值的迭代器对象
let iteratorObject = languages.values();

// 遍历迭代器
for (let value of iteratorObject) {
console.log(value);
}

输出

A
B
C

在上面的示例中,我们使用了 value() 方法来访问 languages 数组中每个索引的值。

我们调用了 languages.values() 方法,它返回了一个数组迭代器对象,即 iteratorObject。

使用 for..of,我们遍历了 iteratorObject,打印出数组每个索引的值。

注意:我们也可以使用迭代器对象的 next().value 来访问值。以下代码打印数组中的第一个值。

console.log(iteratorObject.next().value);

示例 2:在含空位的数组中使用 values()

values() 方法不会忽略数组中的空位。对于数组中的空位,它返回 undefined

let arrayWithHole = ["A", "B", , "C"];

// 为空位返回 'undefined' 作为值
let iteratorObject = arrayWithHole.values();

// 遍历迭代器
for (let value of iteratorObject) {
console.log(value);
}

输出

A
B
undefined
C

在这里,我们在含有空位的数组上调用了 values() 方法。

因为 arrayWithHole 的第三个索引是一个空位,所以该方法为该索引返回 undefined 作为值。

示例 3:关于数组迭代器对象的更多信息

数组迭代器对象不存储值,而是存储所使用数组的地址。例如:

let fruits = ["Apple", "Banana", "Grapes"];

// 返回 fruits 数组中每个索引的值
let iteratorObject = fruits.values();

// 访问数组中索引 0 的值
console.log(iteratorObject.next().value); // Apple

// 更改索引 1 的值
fruits[1] = "Cherry";

// 访问数组中索引 1 的值
console.log(iteratorObject.next().value); // Cherry

输出

Apple
Cherry

在上面的示例中,我们更改了 fruits 数组中索引 1 的值。

因此,在数组中更改值后,iteratorObject 返回存储在索引 1 处的新值(即 'Cherry')。

推荐阅读: JavaScript Array keys()