首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得数组的长度

无法获得数组的长度
EN

Stack Overflow用户
提问于 2015-03-10 06:00:47
回答 4查看 2.8K关注 0票数 2

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

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

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

例如:

代码语言:javascript
复制
var index = cat_attr.indexOf(",")

其显示错误如下:

TypeError: cat_attr.indexOf不是一个函数

EN

回答 4

Stack Overflow用户

发布于 2015-03-10 06:06:03

这不是数组,这是对象。以这种方式定义的数组:[1,2,3]。如果您想检索对象的“长度”,可以这样做:

代码语言:javascript
复制
var students = {job:92, adam:67,sara:83};
var studentNames = Object.keys(students);
var studentsLength = studentNames.length;

如果希望拆分对象数组,可以这样做:

代码语言:javascript
复制
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}]
票数 2
EN

Stack Overflow用户

发布于 2015-03-10 06:04:54

您定义的cat_id变量不是数组,而是javascript对象。这就是为什么它的行为不像数组![]是数组符号。使用数组表示法[],而不是使用{}对象表示法。

票数 0
EN

Stack Overflow用户

发布于 2015-03-10 06:35:21

您的问题是错误的类型和错误的语法。

在您的问题中,您的cat_id是一个对象,而不是字符串或数组。因此,您不能调用length()或indexOf()函数。

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

代码语言:javascript
复制
var cat_id = { 2: 'text', 3: 'TKL1', -1: 'Select an Attribute'}. 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28957079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档