无法过滤另一个数组中的空数组(打字稿)

时间:2021-04-22 12:58:55

标签: arrays typescript

这是我第一次来这里,所以如果我忘记提及某事,请不要生气:)

我正在处理 Typescript 任务,需要一些帮助。 我有这个价值: let values = [["id-1", "id_2"], true, true](长度为 3)。

带有 id 的第一个数组是一个多选下拉列表,所以当我取消选择它们时,我有这个 values = [[], true, true] (长度仍然是 3)。

我想过滤这个数组的长度为 2(在这种情况下),并将空数组推出数组。

数组的类型是“boolean | string[]”,我试着检查长度,我试过 indexOf ......但它不起作用。 有什么想法吗?

谢谢:)

1 个答案:

答案 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] 

Typescript Playground Link