我正在处理 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/