我正在尝试为一个以 map 作为参数的函数编写测试,
当代码在测试之外正常运行时,参数可以采用以下形式(当我调用 toString 时):
Map { "id": "jobs", "label": "Jobs", "nodeType": "ROOT", "childNodesURI": "jobs?owner=*", "childIds": List [ ], "isFetchingChildren": false, "isToggled": true, "jobName": ""}
var node = {
id: "jobs",
label: "JES Jobs",
nodeType: "ROOT",
childNodesURI: "jobs?owner=*",
childIds: [],
isFetchingChildren: false,
isToggled: true,
jobName: "" };
console.log(node.get("id"));
当调用 node.get("id") 时,我得到“TypeError: node.get is not a function”
我假设这是因为没有函数 .get() foo 一个 JSON 对象,但不确定...如果是这种情况,如何将 JSON 转换或初始化为映射?
最佳答案
您向我们展示的是一个 javascript 对象。如果您需要在这种情况下调用“键”,您应该使用 theObject.theProperty
如下所示
var node = {
id: "jobs",
label: "JES Jobs",
nodeType: "ROOT",
childNodesURI: "jobs?owner=*",
childIds: [],
isFetchingChildren: false,
isToggled: true,
jobName: ""
};
//Call the object property ID
console.log(node.id);
如果您需要 map ,您需要这样:
var myMap = new Map();
// setting the values
myMap.set("id", "jobs");
console.log(myMap.get("id"));
如果你想从你的对象开始创建 map ,你可以这样做
var node = {
id: "jobs",
label: "JES Jobs",
nodeType: "ROOT",
childNodesURI: "jobs?owner=*",
childIds: [],
isFetchingChildren: false,
isToggled: true,
jobName: ""
};
function buildMap(obj) {
let map = new Map();
Object.keys(obj).forEach(key => {
map.set(key, obj[key]);
});
return map;
}
const map = buildMap(node);
console.log(map.get("id"));
关于javascript - 为什么我无法对 json 数据调用 .get/如何将 json 转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124404/