【问题标题】:Getting value from a map data structure从地图数据结构中获取价值
【发布时间】:2017-02-03 13:42:03
【问题描述】:

当我尝试在 Reactjs 代码中打印道具的值时,我得到以下信息:

console.log(this.props.rec.get('data'));

 Map
    __altered: false
    __hash: undefined
    __ownerID: undefined
    _root: ArrayMapNode
        entries: Array[8]
            0: Array[2]
            1: Array[2]
            2: Array[2]
            3: Array[2]
                0: "language"
                1: "ena"
            4: Array[2]
            5: Array[2]
                0: "owners"
                1: List
                    length: 2
                    __proto__: Array[0]
            6: Array[2]
            7: Array[2]

            length: 8
            __proto__: Array[0]
        ownerID: OwnerID
        __proto__: Object
        size: 8
    __proto__: KeyedIterable

entries 是一个函数。如何从这些数据中获取“language”和“owners”的值?

我不太明白这个结构,谁能给我解释一下?

【问题讨论】:

  • 您知道您似乎在使用 immutable.js 吗?查看其文档facebook.github.io/immutable-js/docs/#/Map
  • 你能告诉我们你的商店结构吗
  • @Maxx 谢谢!你的回答正是我需要的。对于“所有者”,它返回一个列表。你能告诉我如何获得它的价值吗?
  • @Sarah 与 language - this.props.rec.get('data').get('owners') 相同。然后您可以通过索引获取所有者,例如 this.props.rec.get('data').get('owners').get(0)

标签: javascript dictionary reactjs iteration


【解决方案1】:

这似乎是 ES2015 Map 问题,与 React 无关。

我相信 entry 拥有 Map 的所有键值对。

【讨论】:

    【解决方案2】:

    您知道您似乎在使用 immutable.js 吗?查看其文档https://facebook.github.io/immutable-js/docs/#/Map

    试试:

    console.log(this.props.rec.get('data').get('language'))
    console.log(this.props.rec.get('data').get('owners').get(0))
    

    【讨论】:

      【解决方案3】:

      您可以使用.toJS() 获取更易读的数据版本。例如this.props.rec.get('data').toJS()

      然后您可以使用this.props.rec.get('data').toJS().owners 来获取owners,或者使用.getIn()ImmutableJS 语法来检索您需要的信息,例如this.props.rec.getIn('data', 'owners')

      【讨论】:

      • 谢谢@Geraint,这很有帮助:)
      【解决方案4】:

      我们不会直接获取 Map 格式,所以我们需要像下面这样转换和获取数据:

      let postData: any = Map(this.props.data).toJS()   
      Object.keys(postData).map((key) => {  
            console.log(postData[key]['attribute'])   
       })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-10
        • 2016-10-29
        • 1970-01-01
        • 2011-10-10
        • 2016-04-04
        • 2022-08-17
        • 1970-01-01
        相关资源
        最近更新 更多