【问题标题】:How Key mapping works in JavaScript maps键映射在 JavaScript 映射中的工作原理
【发布时间】:2017-10-18 18:43:25
【问题描述】:

下面是来自 Neo4j 的结果集的 console.log。它返回一个地图数组。

我可以results[0].get('RESULT'),它返回结果键的对象或映射(我不确定它是哪一个)。

这是如何工作的?当我创建地图时,我有一个键和一个值,但没有办法拥有一个键数组,当我调用 .get 时,它返回“映射”对象。

 [ Record {
     keys: [ 'RESULT', 'PROVINCE', 'CITY' ],
     length: 3,
     _fields: [ [Object], [Object], [Object] ],
     _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 }
    },
   Record {
     keys: [ 'RESULT', 'PROVINCE', 'CITY' ],
     length: 3,
     _fields: [ [Object], [Object], [Object] ],
     _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 }
    },
   Record {
     keys: [ 'RESULT', 'PROVINCE', 'CITY' ],
     length: 3,
     _fields: [ [Object], [Object], [Object] ],
     _fieldLookup: { RESULT: 0, PROVINCE: 1, CITY: 2 }
    }]

当我控制台记录地图时,它看起来像这样:

Map {
    'RESULT' => { name: 'Bob' },
    'PROVINCE' => { name: 'BC' },
    'CITY' => { name: 'Nanaimo' }
}

【问题讨论】:

    标签: javascript neo4j


    【解决方案1】:

    我假设你使用的是官方的Neo4j Javascript Driver

    在这种情况下,您正在处理的结果集是Record 对象的数组。当您执行results[0].get('RESULT') 时,您调用的是在此类中实现的get function

    关于Record.get 函数的文档说:

    通过索引或字段键从此记录中获取值。

    【讨论】:

    • 我相信它们是一组地图,因为您不能在对象上使用 .get?
    • @Kainan 在这种情况下,.get 是 Neo4j Javascript Driver 的 Record 类中实现的函数。查看this link 中的实现。与 Map 中的 .get 没有关系。另外,typeof results[0] 的输出是什么?
    • 结果是对象,但是当我在地图上执行 typeof 时,它说对象。你是正确的 .get 是一个功能。谢谢你帮我解决这个问题。
    【解决方案2】:

    您可以使用.entries() 获取属性,Map 的值对作为 IteratorArray.from() 以获取属性作为数组

    const map = new Map();
    map.set("RESULT", {name:"Bob"});
    map.set("PROVICE", {name:"BC"});
    map.set("CITY", {name:"Nanaimo"});
    
    let entries = Array.from(map.entries(), ([prop]) => prop);
    
    console.log(entries);
    
    let prop = "CITY";
    
    console.log(
      map.get(entries[entries.indexOf(prop)])
    ); // `{"name": "Nanaimo"}`

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 2011-11-18
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多