Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,对象属性显示为未定义_Javascript_Jquery_Knockout.js_Typescript - Fatal编程技术网

Javascript,对象属性显示为未定义

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

我有一个来自服务的json响应,如下所示:

检索数据:

{
  "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()