javascript - 如何从数组中排除某些键

标签 javascript reactjs ecmascript-6 lodash

我正在研究数据表组件的渲染方法,我必须在其中过滤一些 header 。

我有这个:

  <TableRow>
    {headers.map(header =>
      checkboxes.map(checkbox =>
          // HERE I NEED TO FILTER IT
        checkbox.value === header.key && checkbox.checked && (
          <TableHeader {...getHeaderProps({ header })}>               
            {header.header}
          </TableHeader>
        ),
      ),
    )}
  </TableRow>

您在上面看到的 checkbox.checked 返回 truefalse,我需要 2 个键来忽略这些条件。条件是否满足并不重要。

在这里,我检查 checkboxheader 的值是否相同 checkbox.value === header.key 但我需要排除 2 个 header.key,即 header.key === deviceheader.key === TicketNumber

所以我需要做这样的事情:

 <TableRow>
    {headers.map(header =>
      checkboxes.map(checkbox =>
          // HERE I NEED TO FILTER IT
        checkbox.value === header.key && checkbox.checked && (ignore header.key === 'device' && header.key === 'ticketNumber' from the conditionals above) (
          <TableHeader {...getHeaderProps({ header })}>               
            {header.header}
          </TableHeader>
        ),
      ),
    )}
  </TableRow>

我的意思是,我在上面的代码中提到的这两个 header 永远不应该从 UI 中隐藏。当满足此条件 checkbox.value === header.key && checkbox.checked 时,它将隐藏所有 checkbox.checked === true 的 header ,但是我需要一个适当的条件/函数来忽略 header 键 header.key === deviceheader.key === TicketNumber。这两个 header 应该始终存在于 UI 中。

我正在使用lodash,我不知道是否可以在那里使用它或者是否有其他选择?

最佳答案

如果我正确理解您的要求,我认为这应该可行:

<TableRow>
  {headers.map(header =>
     (['device', 'ticketNumber'].includes(header.key) || checkboxes.find(checkbox => header.key === checkbox.value).checked) && 
       <TableHeader {...getHeaderProps({ header })}>               
         {header.header}
       </TableHeader>
  )}
</TableRow>

关于javascript - 如何从数组中排除某些键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53730954/

相关文章:

javascript - ES6 类属性定义

javascript - 在 onclick 属性中使用 coffeescript 创建函数

reactjs - React Navigation 5,登录后阻止返回导航

javascript - 如何在点击时重复某个部分?

javascript - Reactjs:如何有效地检查表格的单元格内容是否太长

node.js - "Failed to load resource: net::ERR_CONNECTION_REFUSED"用于生产中的 Assets 、css、app.js 和vendor.js(react、babel、webpack)

javascript - 如何在react-redux中返回组合的reducer?

javascript - 如何使用 SystemJS 加载命名导出

javascript - AngularJS 将事件发送到另一个 Controller ($broadcast、$window.localStorage 等)

javascript - 一个函数,接受包含空格和标点符号的句子并返回删除它们的字符串