这是我第一次来这里,所以如果我忘记提及某事,请不要生气:)
我正在处理 Typescript 任务,需要一些帮助。
我有这个价值:
let values = [["id-1", "id_2"], true, true]
(长度为 3)。
带有 id 的第一个数组是一个多选下拉列表,所以当我取消选择它们时,我有这个 values = [[], true, true]
(长度仍然是 3)。
我想过滤这个数组的长度为 2(在这种情况下),并将空数组推出数组。
数组的类型是“boolean | string[]”,我试着检查长度,我试过 indexOf ......但它不起作用。 有什么想法吗?
谢谢:)
答案 0 :(得分:0)
您是否打算过滤数组的所有“空”值,包括 false
boolean
值?还是只是为了删除空数组?
此逻辑仅删除空数组。当应保留项目时,.filter()
回调返回 true
。所以我们说如果value
是一个array
,只有当长度大于true
时才返回0
。但如果它不是 array
,则始终返回 true
。
type MyArrayType = (boolean | string[])[];
const filterMyArray = (array: MyArrayType): MyArrayType => {
return array.filter(value => Array.isArray(value) ? value.length > 0 : true )
}
const a = [["id-1", "id_2"], true, true]
const b = [[], true, true]
const c = [[], false, true]
console.log(filterMyArray(a)); // -> [["id-1", "id_2"], true, true]
console.log(filterMyArray(b)); // -> [true, true]
console.log(filterMyArray(c)); // -> [false, true]