地图即使已填满也返回空

时间:2019-06-16 12:40:29

标签: javascript

我有一个对象,在其中遍历键值并尝试填写map,但是我的map返回空吗?

我尝试使用map.set和map [key] =值,但没有一个填充

let object1 = {"ItemType":"Star","values":{"a0k2E0000018AcbQAE":"3","a0k2E0000018AcWQAU":"2","a0k2E0000018AcgQAE":"4","a0k2E0000018AclQAE":"5","a0k2E0000018AcDQAU":"1"}};
//console.log(Object.keys(object1));
let ab = new Map();
for (let [key, value] of Object.entries(object1)) {
    console.log(key, value);
  if(key === 'Itemtype') {
    
    ab.set(key,value);
  }
}

console.log('new thing ' + JSON.stringify(ab));

新事物{}

3 个答案:

答案 0 :(得分:4)

我认为,这是因为您的条件失败,它必须像这样:

  if(key === 'ItemType') { // you have Itemtype, it does not exist

    ab.set(key,value);
  }

答案 1 :(得分:4)

JSON.stringify(ab)ab视为简单对象;它对Map实例一无所知。通常,由于Map键可以是任意对象,因此JSON不能表示很多有效的Map结构。

您可能会做类似JSON.stringify(Array.from(map.entries()))的操作,但是在许多情况下都行不通。

或者,如果您知道键始终是字符串,则可以使用普通对象而不是Map。

答案 2 :(得分:0)

ItemType键入为Itemtype

let object1 = {"ItemType":"Star","values":{"a0k2E0000018AcbQAE":"3","a0k2E0000018AcWQAU":"2","a0k2E0000018AcgQAE":"4","a0k2E0000018AclQAE":"5","a0k2E0000018AcDQAU":"1"}};
//console.log(Object.keys(object1));
let ab = new Map();
for (let [key, value] of Object.entries(object1)) {
    console.log(key, value);
  if(key === 'ItemType') {
    
    ab[key]=value;
  }
}

console.log('new thing ' + JSON.stringify(ab));