簡體   English   中英

如何僅過濾數組中符號類型的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM