[英]How to filter only values with type Symbol in an array?
我正在研究箭頭庫,我正在創建一個函數,該函數僅返回類型為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]);
嘗試這個:
let arr = [Symbol('foo'), 123]; let filtered = arr.filter(x => typeof(x) == 'symbol'); console.log(filtered);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.