gpt4 book ai didi

javascript - 如何测试包含未定义元素的数组的相等性?

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:48 25 4
gpt4 key购买 nike

我在node.js的assert模块中遇到了一些奇怪的行为。我不确定这是否是错误或预期行为。

当我创建一个数组,然后在第三个元素上初始化一个值时,前两个元素未定义。测试前两个元素是否未定义返回 true,但是将整个数组与前两个元素的 undefined 进行比较会失败。

var assert = require('assert');

var a = [];
a[2] = 2;
console.log(a); // [ , , 2 ]

assert.equal(a[0], undefined); // ok
assert.equal(a[1], undefined); // ok
assert.equal(a[2], 2); // ok
assert.deepEqual(a, [, , 2]); // ok
assert.deepEqual(a, [undefined, undefined, 2]); // error ???

我可以理解未定义的元素和具有值未定义的元素之间存在差异,因为Array扩展了Object,而数组元素只是对象的属性。

但是为什么最后一个断言失败了?

最佳答案

很可能是因为 [,,2][undefined,undefined,2] 没有相同数量的键:

> Object.keys([,,2]).length
1
> Object.keys([undefined,undefined,2]).length
3

这是relevant part正在检查此的 assert 代码。

关于javascript - 如何测试包含未定义元素的数组的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com