我正在使用如下定义的数组
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不是函数
答案 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;