array.from适合浅拷贝简单数组或类数组对象,尤其需边拷贝边映射转换时;对纯值类型安全,含引用类型则共享内存;仅支持可迭代对象,普通对象需先转object.entries()。

Array.from 可以对数组或类数组对象进行浅拷贝,它会创建一个新数组,元素值与原数组相同(引用类型仍共享同一内存地址)。
什么时候适合用 Array.from 浅拷贝?
当你需要快速复制一个简单数组(不含嵌套对象/数组),或想在复制的同时做映射转换时,Array.from 很实用。它比扩展运算符更灵活,支持传入映射函数。
- 原数组是纯值类型(如数字、字符串、布尔值)→ 拷贝后修改互不影响
- 原数组含对象或数组 → 新数组里这些元素仍是原引用,修改内部属性会影响原数组
- 想边拷贝边处理(比如转为大写、乘2等)→ 直接传第二个参数 mapFn
基本用法:只复制不加工
直接传入原数组即可生成浅拷贝:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
const copy = Array.from(original);
copy[0] = 99; // ✅ 不影响 original[0]
copy[2].name = 'Bob'; // ❌ original[2].name 也变成 'Bob'
进阶用法:拷贝 + 映射转换
第二个参数是一个回调函数,类似 map,但执行时机在拷贝过程中:
const numbers = [1, 2, 3];const doubled = Array.from(numbers, x => x * 2); // [2, 4, 6]
const arr = ['a', 'b'];
const upper = Array.from(arr, s => s.toUpperCase()); // ['A', 'B']
注意:不能直接用于普通对象
Array.from 只能处理可迭代对象(如数组、Set、Map 的 keys/values、字符串等)。对普通对象需先转成可迭代结构,比如用 Object.entries():
const obj = { a: 1, b: 2 };// 错误:Array.from(obj) → []
// 正确:
const entries = Array.from(Object.entries(obj)); // [['a', 1], ['b', 2]]
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










