从地图数据结构中获取价值

时间:2016-09-26 09:20:02

标签: javascript dictionary reactjs iteration

当我尝试在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是一个功能。如何从此数据中获取“语言”和“所有者”的值?

我真的不明白这个结构,有人可以向我解释一下吗?

4 个答案:

答案 0 :(得分:1)

你知道你似乎在使用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))

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

我相信条目具有Map的所有键值对。

答案 3 :(得分:0)

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

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