前言
ECMAScript 2016 是 ECMAScript 标准的第七个版本。其中,对于 Array 类型的函数进行了扩展,新增了一些实用的函数,本文将对这些函数进行详细介绍,并提供示例代码,以便读者更好地理解和学习它们。
Array.from()
Array.from() 函数用于将一个类数组对象或可迭代对象转化为数组。它接受两个可选参数:第一个参数指定要转化的对象,第二个参数指定一个映射函数,可以对每个元素进行修改。该函数的返回值是转化后的数组。示例代码如下:
let arr1 = Array.from("hello"); console.log(arr1); //输出 [ 'h', 'e', 'l', 'l', 'o' ] let arr2 = Array.from([1, 2, 3], x => x * 2); console.log(arr2); //输出 [ 2, 4, 6 ]
从以上代码可以看出,Array.from() 函数可以将类数组对象和可迭代对象转化为数组,并且可以对数组的每个元素进行修改。
Array.of()
Array.of() 函数用于创建一个包含任意类型元素的数组。该函数接受任意数量的参数,参数的值将成为数组的元素,返回值是由这些参数组成的新数组。示例代码如下:
let arr1 = Array.of(1, 2, 3); console.log(arr1); //输出 [ 1, 2, 3 ] let arr2 = Array.of("hello", 2, [3, 4]); console.log(arr2); //输出 [ 'hello', 2, [ 3, 4 ] ]
从以上代码可以看出,Array.of() 函数可以根据传入的参数创建新数组,并且数组的元素类型可以是任意类型。
Array.prototype.includes()
Array.prototype.includes() 函数用于检测数组是否包含某个元素,返回值是一个布尔值。该函数接受两个参数:第一个参数是要检测的元素,第二个参数是要从哪个位置开始搜索,默认值为 0。示例代码如下:
let arr = [1, 2, 3]; console.log(arr.includes(2)); //输出 true console.log(arr.includes(4)); //输出 false
从以上代码可以看出,Array.prototype.includes() 函数可以非常方便地检测一个数组是否包含某个元素。
Array.prototype.fill()
Array.prototype.fill() 函数用于填充数组,将数组的所有元素替换为固定的值。该函数接受三个参数:第一个参数是要填充的值,第二个参数是开始位置,默认值为 0,第三个参数是结束位置,默认值为数组长度。示例代码如下:
let arr = [1, 2, 3, 4, 5]; arr.fill(0, 1, 3); console.log(arr); //输出 [ 1, 0, 0, 4, 5 ]
从以上代码可以看出,Array.prototype.fill() 函数可以非常方便地将数组的所有元素替换为固定的值。
Array.prototype.find() 和 Array.prototype.findIndex()
Array.prototype.find() 函数用于查找数组中满足条件的第一个元素,返回值是该元素。该函数接受一个参数:一个回调函数,该函数接受三个参数,分别是元素的值、元素的索引和原数组本身。Array.prototype.findIndex() 函数和 Array.prototype.find() 函数类似,只不过它返回的是符合条件的第一个元素的索引,而不是该元素。示例代码如下:
let arr = [1, 2, 3, 4, 5]; let result1 = arr.find(x => x > 3); console.log(result1); //输出 4 let result2 = arr.findIndex(x => x > 3); console.log(result2); //输出 3
从以上代码可以看出,Array.prototype.find() 和 Array.prototype.findIndex() 函数可以非常方便地查找数组中符合条件的元素或元素的索引。
总结
以上是 ECMAScript 2016 中的一些新增的 Array 函数,它们在实际开发中非常实用,可以帮助开发者更加方便地处理数组。希望这篇文章能够帮助读者更好地理解这些函数的使用方法,并帮助读者在开发中更好地应用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/644f6a16980a9b385b8eba1d