我正在使用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')]);我期望为true,但它返回:
Expected: [Symbol(vue), Symbol(react)]
Received: serializes to the same string发布于 2020-08-27 12:06:03
使用相同参数创建的两个符号不相等:
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]);发布于 2020-08-27 12:05:40
试试这个:
let arr = [Symbol('foo'), 123];
let filtered = arr.filter(x => typeof(x) == 'symbol');
console.log(filtered);
https://stackoverflow.com/questions/63608988
复制相似问题