我正在使用如下所定义的数组
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不是一个函数
发布于 2015-03-10 06:06:03
这不是数组,这是对象。以这种方式定义的数组:[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}]发布于 2015-03-10 06:04:54
您定义的cat_id变量不是数组,而是javascript对象。这就是为什么它的行为不像数组![]是数组符号。使用数组表示法[],而不是使用{}对象表示法。
发布于 2015-03-10 06:35:21
您的问题是错误的类型和错误的语法。
在您的问题中,您的cat_id是一个对象,而不是字符串或数组。因此,您不能调用length()或indexOf()函数。
此外,您输入了错误的语法,应该是:
var cat_id = { 2: 'text', 3: 'TKL1', -1: 'Select an Attribute'}. https://stackoverflow.com/questions/28957079
复制相似问题