javascript中未定义的Object.length [重复]

Posted

技术标签:

【中文标题】javascript中未定义的Object.length [重复]【英文标题】:Object.length undefined in javascript [duplicate] 【发布时间】:2015-08-31 22:05:26 【问题描述】:

我有一个 javascript 数组对象,例如,

var coordinates = 
     "a": [
         [1, 2],
         [8, 9],
         [3, 5],
         [6, 1]
     ],

         "b": [
         [5, 8],
         [2, 4],
         [6, 8],
         [1, 9]
     ]
 ;

coordinates.length 返回未定义。 Fiddle is here.

【问题讨论】:

对象没有长度,数组有 您期望的长度是多少? 2? 8? 16? 【参考方案1】:

那是因为coordinatesObject 而不是Array,使用for..in

var coordinates = 
     "a": [
         [1, 2],
         [8, 9],
         [3, 5],
         [6, 1]
     ],

     "b": [
         [5, 8],
         [2, 4],
         [6, 8],
         [1, 9]
     ]
 ;

for (var i in coordinates) 
  console.log(coordinates[i]) 

Object.keys

var coordinates = 
  "a": [
    [1, 2],
    [8, 9],
    [3, 5],
    [6, 1]
  ],

  "b": [
    [5, 8],
    [2, 4],
    [6, 8],
    [1, 9]
  ]
;

var keys = Object.keys(coordinates);

for (var i = 0, len = keys.length; i < len; i++) 
  console.log(coordinates[keys[i]]);

【讨论】:

【参考方案2】:

coordinates 是一个对象。默认情况下,javascript 中的对象没有length 属性。一些对象有一个长度属性:

"a string - length is the number of characters".length

['an array', 'length is the number of elements'].length

(function(a, b)  "a function - length is the number of parameters" ).length

您可能正在尝试在您的对象中查找keys 的数量,这可以通过Object.keys() 完成:

var keyCount = Object.keys(coordinates).length;

小心,length 属性可以添加到任何对象:

var confusingObject =  length: 100 ;

【讨论】:

我不知道(function()).length 是参数的数量。感谢您的分享。【参考方案3】:

http://jsfiddle.net/3wzb7jen/2/

 alert(Object.keys(coordinates).length);

【讨论】:

以上是关于javascript中未定义的Object.length [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 错误:JupyterLab 中未定义 IPython

QWebFrame addToJavaScriptWindowObject() 对象在 Javascript 中未定义

无法读取电子 javascript 中未定义的属性“on”

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”

VueJS 道具在组件中未定义

IE中未定义的outerHTML