Javascript 如何通过映射键获取对象的值?

Javascript 如何通过映射键获取对象的值?,javascript,ionic-framework,javascript-objects,Javascript,Ionic Framework,Javascript Objects,我有一个映射结构,其中键是数组,值是对象 myMap = new Map(); myMap.set(["_1030002", "_1030003"], { name: "Yayay", description: "aaa", floor: -3}); 如何通过一个键获取对象的值 例如,如何通过键“_1030003”获取“floor”的值 My provider store.ts: import { HttpClient } from '@angular/common/http'; import

我有一个映射结构,其中键是数组,值是对象

myMap = new Map();
myMap.set(["_1030002", "_1030003"], { name: "Yayay", description: "aaa", floor: -3});
如何通过一个键获取对象的值

例如,如何通过键“_1030003”获取“floor”的值

My provider store.ts:

import { HttpClient } from '@angular/common/http';
import { HttpClientModule } from '@angular/common/http'
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { JsonStoresDataInterface } from './../../providers/stores/stores';

@Injectable()
export class StoresProvider {

    private JsonStoresData = new Map();
    defaultKey  = "_1030003";
    url_request = "path/to/json";


  constructor(public http: HttpClient) {
  }

  getStoresRemote(){
        this.http.get<JsonStoresDataInterface>(this.url_request).subscribe(data => {
            var json = data.data;
            for (var store of json.stores){
                this.JsonStoresData.set(store.polygon_id, {
                        name: store.name,
                        description: store.description,
                        floor: store.floor[0],
                        image: store.pic_info.src,
                        uid: store.uid
                        })
            }
        });

                console.log(this.JsonStoresData);//ok map
                let keys = Array.from(this.JsonStoresData.keys());
            let key = keys.find(key => key.includes(this.defaultKey));
            console.log(this.JsonStoresData.get(key).floor);
       //TypeError: Cannot read property 'floor' of undefined


}
}
从'@angular/common/http'导入{HttpClient};
从“@angular/common/http”导入{HttpClientModule}
从“@angular/core”导入{Injectable};
导入'rxjs/add/operator/map';
从“/../../../providers/stores/stores”导入{JsonStoresDataInterface};
@可注射()
导出类存储Provider{
private JsonStoresData=newmap();
defaultKey=“_1030003”;
url_request=“path/to/json”;
构造函数(公共http:HttpClient){
}
getStoresRemote(){
this.http.get(this.url\u请求).subscribe(数据=>{
var json=data.data;
for(json.stores的var存储){
this.JsonStoresData.set(store.polygon_id{
name:store.name,
description:store.description,
楼层:商店。楼层[0],
图片:store.pic_info.src,
uid:store.uid
})
}
});
console.log(this.JsonStoresData);//确定映射
让keys=Array.from(this.JsonStoresData.keys());
让key=keys.find(key=>key.includes(this.defaultKey));
log(this.JsonStoresData.get(key.floor));
//TypeError:无法读取未定义的属性“floor”
}
}
您可以使用
键()
方法。
keys()
方法
返回一个新的迭代器对象,该迭代器对象按插入顺序包含
Map
对象中每个元素的键

由于返回了
迭代器
对象,因此需要使用
数组.from
方法

我们需要使用
includes
方法来查找
地图的
键,该键包含您问题中的键
\u 1030003

myMap=newmap();
myMap.set([“_1030002”,“_1030003”],{名称:“Yayay”,说明:“aaa”,楼层:-3});
让keys=Array.from(myMap.keys());
let key=keys.find(key=>key.includes(“1030003”);

console.log(myMap.get(key.floor))
console.log(?)
发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并进行。至少需要一点努力才能粘贴数据结构和源代码……感谢您的回答,但我遇到了错误:
TypeError:无法读取未定义的属性“name”
@imk imk imk imk imk imk imk imk imk imk imk imk imk imk imk imk 090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909,我更新了我的答案@MihaiAlexandru Ionut,但仍然出现错误
TypeError:无法读取未定义的属性“floor”
。我用完整的代码更新了我的帖子。也许json解析@imk 1][3][3][3][4有问题,我想
console.log(this.JsonStoresData)
logs空映射。@imk 1][3][3][3][4,看看我的更新答案。