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

作者站长头像
站长
· 阅读数 12
const a1 = [1, 2, 3, 4]; 
const a2 = Array.from(a1); 

a1和a2相等吗为什么?

回复
1个回答
avatar
test
2024-07-17

可以看下 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])
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容