Array.from ()方法详解

本文介绍了如何使用 Array.from 方法将类数组对象转换成真正的数组。文章通过实例演示了类数组对象必须具备 length 属性及数字索引才能正确转换,并解释了当缺少必要属性时的处理结果。
  let arrayLike = {
    0: 'tom', 
    1: '65',
    2: '男',
    3: ['jane','john','Mary'],
    'length': 4
}
let arr = Array.from(arrayLike)
console.log(arr) // ['tom','65','男',['jane','john','Mary']]

1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组。

2、该类数组对象的属性名必须为数值型或字符串型的数字

ps: 该类数组对象的属性名可以加引号,也可以不加引号

let arrayLike = {
‘name’: ‘tom’,
‘age’: ‘65’,
‘sex’: ‘男’,
‘friends’: [‘jane’,‘john’,‘Mary’],
length: 4
}
let arr = Array.from(arrayLike)
console.log(arr) // [ undefined, undefined, undefined, undefined ]

将上面代码中length属性去掉呢?实践证明,答案会是一个长度为0的空数组。

### Array.from 方法详解 `Array.from()` 是 JavaScript 中的一个静态方法,用于将类数组对象或可迭代对象转换为真正的数组。它在处理如 `arguments` 对象、DOM 集合或字符串等数据时非常有用。 #### 语法 ```javascript Array.from(arrayLike, mapFn, thisArg) ``` - **arrayLike**:必填参数,想要转换为数组的类数组对象或可迭代对象。 - **mapFn**(可选):对每个元素执行的映射函数,类似于 `Array.prototype.map`。 - **thisArg**(可选):执行 `mapFn` 函数时使用的 `this` 值。 #### 示例 ##### 克隆数组 `Array.from()` 可以用来浅拷贝一个数组: ```javascript const numbers = [3, 6, 9]; const numbersCopy = Array.from(numbers); console.log(numbers === numbersCopy); // false ``` 这表明新数组与原始数组是两个不同的引用[^1]。 ##### 转换类数组对象 例如,将 `arguments` 对象转换为数组: ```javascript function example() { return Array.from(arguments); } example(1, 2, 3); // [1, 2, 3] ``` ##### 字符串转换为字符数组 字符串是一个可迭代对象,可以使用 `Array.from()` 将其转换为字符数组: ```javascript const str = 'hello'; const chars = Array.from(str); console.log(chars); // ['h', 'e', 'l', 'l', 'o'] ``` ##### 使用映射函数 可以在转换的同时应用一个映射函数: ```javascript const arrayLike = { length: 5, 0: 'a', 1: 'b', 2: 'c' }; const result = Array.from(arrayLike, x => x.toUpperCase()); console.log(result); // ['A', 'B', 'C', undefined, undefined] ``` ### 注意事项 - `Array.from()` 不会修改原数组,而是返回一个新的数组。 - 如果传入的对象没有 `length` 属性,则只会创建一个数组。 - 当提供 `mapFn` 时,它会在每个元素上执行一次,并且结果会被放入新的数组中。 ### 应用场景 - 处理 DOM 操作后得到的节点列表。 - 在函数内部获取所有传递的参数并进行操作。 - 对字符串进行字符级别的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值