在 Typescript 中使用 Array.filter(Boolean)
warning:
这篇文章距离上次修改已过435天,其中的内容可能已经有所变动。
在 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 会保留在数组中。
评论已关闭