无法获得数组的长度

时间:2015-03-10 06:00:47

标签: javascript html arrays arraylist

我正在使用如下定义的数组

cat_id = Object { 2="text", 3="TKL1", -1="Select an Attribute"}

当我尝试检索"cat_id"的长度时 var l = cat_id.length; 它显示的长度为"undefined"。 但是,我无法得到"cat_id"的长度。我无法使用replace()indexOf()split()函数。

例如:

var index = cat_attr.indexOf(",")

显示错误如下:

  

TypeError:cat_attr.indexOf不是函数

4 个答案:

答案 0 :(得分:2)

这不是数组,这是Object。以这种方式定义的数组:[1,2,3]。如果你想要检索"长度"你可以用这种方式做到这一点:

var students = {job:92, adam:67,sara:83};
var studentNames = Object.keys(students);
var studentsLength = studentNames.length;

如果您想要将对象拆分为数组,可以这样做:

var students = {jon:92, adam:67,sara:83};
var studentNames = Object.keys(students);
var studentArray = studentNames.map(function(name){
    var student = {};
    student.name = name;
    student.grade = students[name];
    return (student);
}); // [{name:jon,grade:92},{name:adam,grade:67},{name:sara,grade:83}]

答案 1 :(得分:0)

您定义为不是数组的

cat_id变量,它是一个javascript对象。这就是为什么它不像阵列那样! []是数组表示法。使用数组表示法[]代替您使用的{}对象表示法。

答案 2 :(得分:0)

您的问题类型错误,语法错误。

在你的问题中,你的cat_id是一个Object,而不是字符串或数组。所以你不能调用length()或indexOf()函数。

此外,您键入了错误的语法,它应该是:

var cat_id = { 2: 'text', 3: 'TKL1', -1: 'Select an Attribute'}. 

答案 3 :(得分:0)

以下是检索属性数(大小和/或长度)的方法

size_obj = Object.keys(my_object).length;

size_cat_id = Object.keys(cat_id).length;