【问题标题】:Access Javascript Object Property Issue访问 Javascript 对象属性问题
【发布时间】:2023-03-31 16:39:01
【问题描述】:

我在访问一个非常简单的对象的属性时遇到问题。作为一个新手程序员,我怀疑我对我正在使用的东西有一个简单的误解。

这是正在执行的代码:

    console.log(content);
    console.log(content.title);
    for (x in content){
        console.log(content[x])
    }

这是控制台响应:

{"title":"test","description":"test"}
undefined
{
"
t
i
t
l
e
"
:
"
t
e
s
t
"
,
"
d
e
s
c
r
i
p
t
i
o
n
"
:
"
t
e
s
t
"

}

任何指导将不胜感激。

编辑

内容对象正在通过 angular.js $http 服务发送到服务器,如下所示:

$http({
            method:'post',
            url:"/create/createContent",
            params:{content:$scope.content}
        }).

服务似乎以 JSON 格式移动数据。

感谢大家的帮助!我真的很感激。

【问题讨论】:

  • 能否请您说明您是如何表达您的对象的?
  • 你在哪里设置content?看起来它可能是一个字符串而不是一个对象。此外,for...in 往往更麻烦。
  • 我将内容定义为一个空对象 (content = {}),它是根据用户输入动态添加的(使用 angular.js)。我想我一定是在将它发送到服务器时不小心将其转换为字符串。

标签: javascript object angularjs properties


【解决方案1】:

这看起来像content 实际上是一个字符串,您只是在迭代字符串中的字符。试试这个,看看它是否能满足你的需求:

var contentJson = JSON.parse(content);
for (var x in contentJson) {
    console.log(contentJson[x]);
}

这会将content 字符串解析为适当的JavaScript 对象,您应该能够访问其属性。

【讨论】:

    【解决方案2】:

    在我看来,问题在于您如何定义 content。你这样做吗?

    content = '{"title":"test","description":"test"}';
    

    或者你正在这样做?

    content = {"title":"test","description":"test"};
    

    注意:第一个用单引号包裹整个内容,而第二个没有。

    【讨论】:

    • +1 如果您可以控制content 变量的定义,这也是一个很好的答案。如果您在自己的代码中定义变量,则无需JSON.parse
    【解决方案3】:

    您的对象内容是 JSON 字符串形式。这样做,你会得到你想要的结果:

    content = JSON.parse(content);
    console.log(content);
    console.log(content.title);
    for (x in content){
        console.log(content[x])
    }
    

    您可以告诉您是 JSON 格式的方式是因为键值周围的引号。如果您是对象格式,您将看不到引号。

    看看下面的区别:

    输出到控制台时的 JSON 字符串 {"key1":1,"key2":"two"}

    输出到控制台时的对象 {key:1,key2:"two"}

    【讨论】:

      猜你喜欢
      • 2011-02-04
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2018-09-13
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多