helmer_hanssen 2024-09-10 22:54 采纳率: 53.8%
浏览 4

这两个数组怎么不相等啊?


let numbers = Array(3, 4, 5,);
let values = [3, 4, 5,]
console.log(numbers, typeof numbers);
console.log(values, typeof values);
console.log(numbers === values);

这两个数组怎么不相等啊?

  • 写回答

2条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 22:55
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在你的 JavaScript 代码中,numbersvalues 虽然看起来像是两个包含相同元素的数组,但它们实际上并不相等。原因主要在于你创建 numbers 数组的方式。

    你使用了 Array(3, 4, 5,) 来创建 numbers 数组,但这种方式并没有创建一个包含三个元素的数组。在 JavaScript 中,Array() 是一个构造函数,当使用数字作为参数时,它实际上创建的是一个具有特定长度的数组,每个元素都是 undefined。所以 numbers 是一个长度为 3 的数组,其元素是 undefined。因此,当你尝试访问它的元素时(例如 numbers[0]),你将得到 undefined。在这种情况下,即使数组的长度相同,由于实际元素不同(一个是未定义的值,另一个是具体的值),所以它们并不相等。

    另一方面,你使用 [3, 4, 5,] 创建的 values 是一个包含具体数值的数组。这是正确的方式创建包含具体元素的数组。所以,这两个数组的值是不同的。这就是为什么 numbers === values 返回 false 的原因。

    如果你想让 numbersvalues 相等,你应该使用数组字面量的方式创建 numbers 数组,像这样:

    let numbers = [3, 4, 5];
    let values = [3, 4, 5];
    console.log(numbers === values); // 这将返回 true
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月10日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图