Array.of,Array.from方法介绍和使用

在js中,有两种声明数组的方式, 一个是用[], 另一个是用new关键字。

var array1 = [1,2,3,4,5]  // 直接赋值 
var array2 = new Array(); // new 一个构造实例

new Array()

在 ES5 中,当您将一个数字传递给Array构造函数时,JavaScript 会创建一个长度等于该数字的数组。例如:

let numbers = new Array(2);
console.log(numbers.length); // 2
console.log(numbers[0]); // undefined

这种声明方式将会创建一个长度为2的数组,数组的每一元素都还未初始化,被置为undefined,显然它满足我们的需求,只想要[2]这个数组(new Array()在一些场景下确实比较实用)。

当您向Array构造函数传递一个不是数字的值时,JavaScript 会创建一个数组,其中包含一个具有该值的元素。例如:

numbers = new Array("2");
console.log(numbers.length); // 1
console.log(numbers[0]); // "2"

这种行为有时令人困惑且容易出错,因为您可能不知道传递给Array构造函数的数据类型。

所有对于上面出现的问题,ES6 引入了Array.of()解决这个问题的方法。

Array.of()方法类似于Array构造函数,只是该Array.of()方法不特殊处理单个数值。

换句话说,Array.of()无论参数的类型或数量如何,该方法始终创建一个包含你传递的值的数组。

Array.of

语法:

Array.of(element0[, element1[, ...[, elementN]]])

 参阅示例1:

let numbers = Array.of(3);
console.log(numbers.length); // 1
console.log(numbers[0]); // 3

在这个例子中,我们将数字 3 传递给Array.of()方法。该Array.of()方法创建一个包含一个数字3的数组。

示例2:

let chars = Array.of('A', 'B', 'C');
console.log(chars.length); // 3
console.log(chars); // ['A','B','C']

在这个例子中,我们通过将创建了三个字符:数组'A''B''C'Array.of()方法。数组的大小为 3。

Array.from

语法:

Array.from(arrayLike[, mapFn[, thisArg]])

 from()方法可以接收类数组(arrayLike:伪数组),从而创建出一个数组实例,然后再去遍历。

参阅示例1:

 我们可以看到它会创建并返回出一个新的数组实例,而不改变原有对象。那与map遍历方式有什么区别呢?

示例2:

// 定义一个函数获取传递的参数
function getArgs() {
    console.log(arguments); 
    // output: [Arguments] { '0': 2, '1': 5, '2': 7, '3': 8 }
    console.log("arguments.length: ", arguments.length); 
    // output:  arguments.length:  4
    }
getArgs(2,5,7,8);

拿到arguments的值是个类数组,而不是数组,因此它不能直接使用数组的一些方法。在这个时候其实是可以拿到arguments的length值的,但假如我们试图在arguments上面做一些类似push等数组方法时,它就会报错:

使用Array.from方法把类数组转化为数组:

 这样新实例化的对象就可以使用数组方法了。

补充:伪数组,即 arrayLike ,也称为类数组。是一种按照索引存储数据且具有 length 属性的对象。不具有数组身上的方法。

参考:https://www.javascripttutorial.net/es6/javascript-array-of/

           11个超好用的js数组方法集合~ GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ES6中,Array.from()和Array.of()都是用于创建新数组的方法,但它们的功能和使用方式有所不同。 1. Array.from(): - Array.from()方法用于从类数组对象或可迭代对象中创建一个新的数组实例。 - 它接受一个类数组对象或可迭代对象作为第一个参数,并可选地接受一个映射函数和一个上下文对象作为第二个和第三个参数。 - 它将类数组对象或可迭代对象中的每个元素转换为数组的对应元素。 - 映射函数可以在转换过程中对每个元素进行处理。 - 返回一个新的数组实例。 示例: ```javascript // 从字符串中创建数组 const str = 'hello'; const arr = Array.from(str); console.log(arr); // ['h', 'e', 'l', 'l', 'o'] // 从集合中创建数组 const set = new Set([1, 2, 3]); const arr2 = Array.from(set, num => num * 2); console.log(arr2); // [2, 4, 6] ``` 2. Array.of(): - Array.of()方法用于创建一个包含任意数量参数的新数组实例。 - 它接受任意数量的参数,并将这些参数作为数组的元素,返回一个新的数组实例。 - 它解决了使用Array构造函数创建单个元素数组时的一些问题。 示例: ```javascript const arr1 = Array.of(1, 2, 3, 4); console.log(arr1); // [1, 2, 3, 4] const arr2 = Array.of(5); console.log(arr2); // [5] const arr3 = Array.of(undefined); console.log(arr3); // [undefined] ``` 总结: - Array.from()方法用于从类数组对象或可迭代对象中创建一个新数组,并提供映射功能。 - Array.of()方法用于创建一个包含任意数量参数的新数组实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值