带有Ramda的地图和深物体

问题描述 投票:0回答:1

我需要按“段”属性进行过滤,在这种情况下,我需要按段进行过滤:[名称:“一般”]

我有以下数组

const lines = [{
    id: 1191,
    name: "dev",
    segments: []
  },
  {
    id: 1192,
    name: "credit",
    folder: "Embarazadas",
    segments: [{
        "name": "general",
      },
      {
        "name": "custom",
      }
    ]
  },
  {
    id: 1311,
    name: "box",
    segments: [{
      "name": "custom",
      "line_id": 1431,
      "id": 21,
      "active": true
    }]
  },
  {
    id: 2000,
    name: "sin folder",
    folder: null,
    segments: [{
        "name": "custom",
      },
      {
        "name": "general",
      }
    ],
  },
  {
    id: 2000,
    name: "credit card",
    segments: [{
      "name": "general",
    }],
  },
]

我需要获取所有具有“常规”段的对象

我尝试过Ramda这样做,但是我没有得到结果,首先我绘制了线条图,然后进行了过滤。问题在于,细分市场属性有时到达空]

const filterLinesBySegments = (lines) => {
  const filter = (line) => {
    const hasSegments =R.filter(seg => seg["name"] === "general")(line.segments)
    const newLine = R.compose(
      R.assoc("segments", hasSegments),
    )(line)
    return newLine

  }
  const new= R.map(item => {
      return R.filter(line => {
        return filter(line)
      })(item)

  })(lines)

  return new;
}   

我需要按“段”属性进行过滤,在这种情况下,我需要按段进行过滤:[名称:“常规”我有以下数组const lines = [{id:1191,名称:“ dev”,段:[ ]},...

javascript reactjs ramda.js
1个回答
0
投票

您可以使用R.filter和R.where来按特定属性进行过滤。由于segments是一个数组,请使用R.any搜索某些对象的name是否为general

© www.soinside.com 2019 - 2024. All rights reserved.