在 Typescript 中使用 Array.filter(Boolean)
在 TypeScript 中,Array.filter(Boolean)
是一种常见的技巧,用于从数组中过滤掉所有的 false
值,包括 false
、null
、undefined
、0
和 ""
(空字符串)。这种方法在 JavaScript 中有效,但在 TypeScript 中,如果数组的类型不是布尔类型,可能会遇到类型错误。
例如,如果你有一个数字数组,并且你想要过滤掉所有的 0
或 false
值,你可以这样做:
const numbers: (number | boolean)[] = [1, 2, 0, false, 3, 0, true];
const filteredNumbers = numbers.filter(Boolean) as number[];
console.log(filteredNumbers); // 输出: [1, 2, 3]
在这个例子中,我们使用了 TypeScript 的 Boolean
类型,它会将所有的 false
值过滤掉,但是 0
和空字符串并不是 Boolean
类型,所以它们不会被过滤掉。
如果你想要过滤掉 0
、false
、null
、undefined
、""(空字符串)
,你可以使用一个自定义的过滤函数:
const items = [0, false, null, undefined, "", 1, 2, 3];
const filteredItems = items.filter(item => Boolean(item)) as number[];
console.log(filteredItems); // 输出: [1, 2, 3]
在这个例子中,Boolean(item)
会将所有的 "falsy" 值(0
、false
、null
、undefined
、""(空字符串)
)转换为 false
,然后 Array.filter(Boolean)
会过滤掉这些值。其他的值,包括 1
、2
、3
会保留在数组中。
评论已关闭