a1和a2相等吗为什么?Array.from转换过后的数组和原数组相等吗?

const a1 = [1, 2, 3, 4]; 
const a2 = Array.from(a1); 

a1和a2相等吗为什么?

阅读 1.8k
3 个回答

可以看下 MDN 上的描述:Array.from() 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
https://developer.mozilla.org...

既然是浅拷贝,那么得到的就是一个新数组,因此 a1 !== a2。但由于是浅拷贝,如果把 a1 的成员换成其他引用类型的值,那么其成员将还是相等的

const a1 = [{ value: 0 }, { value : 1}, { value: 2 }]
const a2 = Array.from(a1);

console.log(a1 === a2); // false

console.log(a1[0] === a2[0]); // true (a1[x] === a2[x])

不相等,Array.from是基于一个可迭代对象创建一个浅拷贝的数组,如果数组里的元素是对象的话,这个元素是相等的

image.png
不相等

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏