【问题标题】:Javascript , Object property is shown as undefinedJavascript,对象属性显示为未定义
【发布时间】:2016-02-26 02:07:44
【问题描述】:

我有一个来自服务的 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]);

它返回undefined

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: ""....

任何帮助将不胜感激。

【问题讨论】:

  • 删除包裹密钥建筑的双引号:String(JSON.stringify(element.Serial()));
  • 你是对的@hindmost,现在它可以工作了! :)
  • 试试var a = element.Serial().toString()

标签: javascript jquery knockout.js typescript


【解决方案1】:

它返回未定义。

这是因为你有('"' + JSON.stringify(element.Serial()) + '"'); 字符串将类似于""35736"" 而不是"35736"

同样使用String 构造函数是一种非常糟糕的做法,因为它非常规(例如typeof 会有所不同)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    相关资源
    最近更新 更多