我有一个对象,在其中遍历键值并尝试填写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));
新事物{}
答案 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));