Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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长度方法始终为json对象返回一个值_Javascript - Fatal编程技术网

JavaScript长度方法始终为json对象返回一个值

JavaScript长度方法始终为json对象返回一个值,javascript,Javascript,我只是在学习json。我试图循环一个数组,但长度是1,即使数组有3个元素。为什么我得到的是1而不是3?代码如下: LoadPendingMsg: function() { // Load attachments this.serverPendingMsg = { "Attachments" : [ { LinkNaname:"ted", LinkUrl: "www.ted", LinkNaname:"ted", Link

我只是在学习json。我试图循环一个数组,但长度是1,即使数组有3个元素。为什么我得到的是1而不是3?代码如下:

LoadPendingMsg: function()
{
  // Load attachments

  this.serverPendingMsg = { 
    "Attachments" : [
             { LinkNaname:"ted", LinkUrl: "www.ted",
               LinkNaname:"ted", LinkUrl: "www.ted",
               LinkName:"ted", LinkUrl: "www.ted"}
       ],
    "Message" : "Hello sample message"
  };

// size is one, should be 3??????????
size=this.serverPendingMsg.Attachments.length;  
for (i=0; i < size; i++)
LoadPendingMsg:function()
{
//装载附件
this.serverpendingsg={
“附件”:[
{LinkNaname:“ted”,LinkUrl:“www.ted”,
LinkNaname:“ted”,LinkUrl:“www.ted”,
LinkName:“ted”,LinkUrl:“www.ted”}
],
“消息”:“Hello示例消息”
};
//尺寸是一号,应该是3号??????????
size=this.serverpendingsg.Attachments.length;
对于(i=0;i
您的问题中所示的
附件
属性是一个包含一个元素的数组,其中该元素是一个包含六个属性的对象(实际上是三个属性-请参见下面的注释)。我想您打算包含三个类似对象的数组,每个对象都有两个属性,如下所示:

this.serverPendingMsg = {
   "Attachments" : [
       { LinkNaname:"ted", LinkUrl: "www.ted"},
       { LinkNaname:"ted", LinkUrl: "www.ted"},
       { LinkName:"ted", LinkUrl: "www.ted"}
    ],
    "Message" : "Hello sample message"
};

size=this.serverPendingMsg.Attachments.length;
alert(size); // 3
请注意,按照您的方式,对象多次使用相同的属性名称,这显然不会在某些浏览器中出现错误,但这些属性将相互覆盖-一个对象只能有一个具有特定名称的属性。因此,您的实际对象只会有三个不同的属性名称

(您还有
LinkNaname
LinkName
,但您可能想让它们都是
LinkName

注意:这里的不是“JSON对象”,而是JavaScript对象文字-JavaScript提供的用于创建对象的几种方法之一。JSON是数据的字符串表示形式,使用(几乎)与JavaScript用于对象文字相同的语法,因此“JavaScript对象记法”的缩写为“JSON”。JSON是(大多数情况下)作为一种方便的方式来序列化数据,以便将其作为字符串传输,例如,在web编程中,JSON格式经常用于Ajax响应。

为什么
this.serverpendingsg.Attachments的
length
1
this.serverpendingsg.Attachments
是一个数组,只有一个元素,您定义为:

{
    LinkNaname:"ted",
    LinkUrl: "www.ted",
    LinkNaname:"ted",
    LinkUrl: "www.ted",
    LinkName:"ted",
    LinkUrl: "www.ted"
}
这就是为什么这个数组的
长度
等于一个

为什么你的目标不完全是你写的 另外一件事:您定义对象的方式会导致以下对象:

{
    LinkName: "ted",
    LinkNaname: "ted",
    LinkUrl: "www.ted"
}
()


为什么?因为对象属性的名称必须是唯一的
——如果不唯一,就会被覆盖。

你把Java和JavaScript混淆了。它们几乎没有任何共同点,只有两个:1)都有“Java”在他们的名字中,2)都是编程语言。我更正了你问题的标题。嗨,谢谢你解释我没有数组,如果我想把它作为数组,那么它就像LinkName[3]和LinkUrl[3]一样,我该怎么做???只需按照你接受的答案来做。这是对你来说最好的方法。