首页 > 解决方案 > 如何避免在使用 Object.entries 迭代键值对时将“键”作为参数传递给映射、减少或过滤?

问题描述

我正在按照这个问题的答案来过滤 JS 中的键值对。

我有一个键值对对象。我正在尝试做这样的事情

{
   Object.entries(this.state.passengers)
      .filter(([key, passenger]) => passenger.flightNumber === this.props.flightNumber)
      .map(([key, passenger]) => {
         return ( 
            <tr key = {key}>
            //...JSX code
         )
      })
}

我在控制台中收到未使用密钥的警告。我没有找到正确的语法来避免将键作为参数传递给过滤方法。不过,我想将密钥传递给后续的 map 方法。请帮忙。我是 JS 新手。

标签: javascriptreactjs

解决方案


您在这里有几个选项,最简单的可能是忽略解构赋值中的第一个数组值,这样一开始key就不会在.map()回调中定义:

.map(([, passenger]) => {

此外,另一种方法可能是使用Object.keys(),然后通过以下方式获取值key

Object.keys(this.state.passengers)
  .filter(key => this.state.passengers[key].flightNumber === this.props.flightNumber)
  .map(key => {
    return ( 
      <tr key = {key}>
      //...JSX code
    )
  })

推荐阅读