打字稿map.get返回未定义

时间:2018-12-21 21:35:19

标签: javascript typescript

当我想由Object获得key时,我每个元素都有undefined

我的地图:

nodesMaps : Map<number, Object> = [
{ key: "1", value: Object },
{ key: "2", value: Object },
{ key: "3", value: Object },
]

当我想获得这张地图的价值时:

this.nodesMaps.get(1) // return undefined
this.nodesMaps.get("1") // return undefined

3 个答案:

答案 0 :(得分:0)

您搞砸了很多事情。

  1. 即使您声明了类型Map,您也分配了一个Array值。
  2. 该数组是对象数组,而不是长度为2的数组。 等

有效的地图创建应如下所示:

let nodesMap = new Map([
    [1, 'foo'],
    [2, 'bar'],
    [3, 'baz'],
])
    
 console.log(nodesMap.get(1)) // foo

答案 1 :(得分:0)

下面是我的代码。

let map = new Map([
    [ "A", "AA" ],
    [ "B", "BB" ],
    [ "C", "CC" ]
]);

console.log(map.get("A"));

检查此:https://jsfiddle.net/vipinmpd08/1b68eLdr/91920/

答案 2 :(得分:-1)

您不能基于属性不是对象,它们是数组的事实来分配属性,并且需要使用new。您的代码应如下所示:

// TypeScript
nodesMaps : Map<number, Object> = new Map([
  [ 1, Object ],
  [ 2, Object ],
  [ 3, Object ],
]);

Map Reference

var nodesMaps = new Map([
  [ 1, "Object 1" ],
  [ 2, "Object 2" ],
  [ 3, "Object 3" ],
]);

$('button').on('click', function() {
  var key = $(this).data('key');
  console.log("key :" + key);
  console.log("value: " + nodesMaps.get(key));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button data-key="1">1</button>
<button data-key="2">2</button>
<button data-key="3">3</button>