Javascript,对象属性显示为未定义
我有一个来自服务的json响应,如下所示: 检索数据:Javascript,对象属性显示为未定义,javascript,jquery,knockout.js,typescript,Javascript,Jquery,Knockout.js,Typescript,我有一个来自服务的json响应,如下所示: 检索数据: { "35736":{"Id":0, "Name":"car"} ,"48973":{"Id":0, "Name":"book"} ,"41981":{"Id":0, "Name":"dog"} } 我想使用数字键获取属性值,例如: console.log(retrievedData["35736"]); 有一个迭代元素列表。每个元素都有一个与键属性值匹配的“序列” 使用硬编码值时: console.log(retrieve
{
"35736":{"Id":0, "Name":"car"}
,"48973":{"Id":0, "Name":"book"}
,"41981":{"Id":0, "Name":"dog"}
}
我想使用数字键获取属性值,例如:
console.log(retrievedData["35736"]);
有一个迭代元素列表。每个元素都有一个与键属性值匹配的“序列”
使用硬编码值时:
console.log(retrievedData["35736"]);
它显示了正确的对象,但当我像这样构建关键点时:
var a = String('"' + JSON.stringify(element.Serial()) + '"');
console.log(retrievedData[a]);
它返回未定义的
resultList.forEach(function (element) {
console.log("retrieved data, Serial:" + element.Serial());
var a = String('"' + JSON.stringify(element.Serial()) + '"');
console.log(a);
console.log(retrievedData[a]);
console.log(retrievedData["35736"]);
}
我做错了什么
输出值、控制台日志:
retrieved data, Serial:35736
v.ts:199 "35736"
v.ts:204 undefined
v.ts:206 Object {Id: 35736, Name: ""....
任何帮助都将不胜感激
它返回undefined
这是因为您有(“”+JSON.stringify(element.Serial())+”)代码>字符串类似于“35736”
而不是“35736”
另外,使用String
构造函数是一种非常糟糕的做法,因为它的非常规性(例如typeof
将有所不同)删除包装关键构建的双引号:String(JSON.stringify(element.Serial())代码>你是对的@hindsmost,现在它可以工作了!:)尝试var a=element.Serial().toString()