无法获取数组的长度

Unable to get the length of an array

本文关键字:数组 获取      更新时间:2023-09-26

>我正在使用下面定义的数组

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 不是函数

这不是数组,这是对象。以这种方式定义的数组:[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}]

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

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

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

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

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

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

size_obj = Object.keys(my_object).length;

如在

size_cat_id = Object.keys(cat_id).length;