javascript - 如何仅过滤数组中符号类型的值?

标签 javascript jestjs

我正在处理 arrow library我正在创建一个函数,它只返回类型为 Symbol 的元素.
我使用 filter数组上的函数:

export const extractSymbol = array => {
    if (isArray(array)) {
        return array.filter(value => typeof value === "symbol")
    }
}
但是因为我在实现之前创建了测试,所以这个测试失败了:
  expect(extractSymbol([1, 2, 4, Symbol('vue'), Symbol('react')])).toStrictEqual([Symbol('vue'), Symbol('react')]);
   
我期望是真的,但它返回:
 Expected: [Symbol(vue), Symbol(react)]
 Received: serializes to the same string

最佳答案

使用相同参数创建的两个符号彼此不相等:

console.log(
  Symbol('foo') === Symbol('foo')
);

要使测试正常工作,请在 expect 之外定义符号。 ,因此您可以将相同的引用传递给两个数组:
const s1 = Symbol('vue');
const s2 = Symbol('react');
expect(extractSymbol([1, 2, 4, s1, s2])).toStrictEqual([s1, s2]);

关于javascript - 如何仅过滤数组中符号类型的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63608988/

相关文章:

javascript - 将内联样式添加到特定的 div

node.js - 如何使用 Jest 断言数据类型

javascript - 如何获取 H1 标签的值并使用 Jest 和 RTL 对其进行测试

jestjs - 测试成功完成后开 Jest 不会终止

javascript - 如何使用 Keydown 事件在多种语言/键盘布局中获取正确的字符?

javascript - 监听 http 80 端口时出现 Node.js EACCES 错误(权限被拒绝)

reactjs - 开 Jest ,没有预处理我的 JSX

javascript - Jest : mocking console. 错误 - 测试失败

javascript - 在 jquery 中使用 NumberFormatter 忽略空输入

javascript - 如何在 EmberJs 中将具有变量和静态部分的属性传递给组件?