JavaScript如何从二维数组中按条件提取并排除指定元素?
二维数组过滤指定元素并转为一维数组的实现
给定二维数组 const array = [["1", "3"],["4", "3"]],需要排除元素 const itemToExclude = "3",最终得到一维数组 ["1", "4"]。你当前的代码用了两层 map,但 map 只负责转换元素不会移除元素,所以没法实现过滤和扁平化的需求,以下是两种可行的修改方案:
方案一:先扁平化再过滤
直接把二维数组转成一维后,筛选掉不需要的元素:
const array = [["1", "3"],["4", "3"]] const itemToExclude = "3" const result = array.flat().filter(subitem => subitem !== itemToExclude) console.log(result) // 输出 ["1", "4"]
flat() 方法会将二维数组拉平为一维,接着用 filter() 留下不等于 itemToExclude 的元素即可。
方案二:先过滤子数组再扁平化
先对每个子数组单独过滤,再把结果合并成一维数组:
const array = [["1", "3"],["4", "3"]] const itemToExclude = "3" const result = array.map(subArray => subArray.filter(item => item !== itemToExclude)).flat() console.log(result) // 输出 ["1", "4"]
内层用 filter() 替换原来的 map,先把每个子数组里的目标元素去掉,再用 flat() 把处理后的二维数组转成一维。
内容的提问来源于stack exchange,提问作者Kal
相关产品推荐
相关产品推荐

