javascript - 如何根据内部数组属性的过滤来过滤数组?

标签 javascript arrays filter map-function

我有以下对象数组:

let a = [
    {
        b: [1, 11, 12],
        c: "a1"
    },
    {
        b: [2, 56, 1],
        c: "a2"
    },
    {
        b: [1, 2, 3],
        c: "a3"
    }
]

我想做最简单的操作,我可以返回一个第二个数组,它是 a副本,但只包含以下元素b 数组包含至少一个大于 10 的元素,并且对于每个这样的元素,b 只包含大于 10。所以我希望输出是:

[
    {
        b: [11, 12],
        c: "a1"
    },
    {
        b: [56],
        c: "a2"
    }
]

我知道我可以天真地使用循环或使用 filter() 分多个步骤完成此操作,但我想知道是否有有效的单行解决方案。 有什么建议吗?

最佳答案

您可以使用 filterreduce像这样:

let a = [{b:[1,11,12],c:"a1"},{b:[2,56,1],c:"a2"},{b:[1,2,3],c:"a3"}]

const output = a.reduce((acc, { b, c }) => {
  // filter "b" property
  const filtered = b.filter(n => n > 10);
  
  if (filtered.length)
    acc.push({ b: filtered, c });
    
  return acc;
}, [])

console.log(output)

关于javascript - 如何根据内部数组属性的过滤来过滤数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485113/

相关文章:

javascript - 将混合数据类型数组从 php 传递到 javascript 数组

javascript - .split ("1px") 到 ["1px",1 ,"px"] 在 Javascript

php - 阵列似乎在 7 项后停止

Java 数组游戏 - 游戏逻辑概念

excel - 选择第一个过滤的单元格,然后移至下一个过滤的单元格

linux - 关于如何使用脚本制作过滤器的问题

javascript - CSS/Javascript 灯箱

javascript - jquery - 数据表更改 sScrollY

嵌套列表的 C 等价物 (Python)

javascript - 在 javascript 中使用 map 和 reduce 来过滤数组中的对象