对象数组长度在JavaScript中返回未定义
我在控制台中有一个如下所示的数组对象数组长度在JavaScript中返回未定义,javascript,arrays,Javascript,Arrays,我在控制台中有一个如下所示的数组 console.log(roles); User {0: "AdminUser", 1: "AuthenticatedUser"} 虽然它是一个数组,但我无法获取数组长度 console.log(roles.length); undefined 但是如果使用索引访问数组,我可以得到如下所示的值 console.log(roles[0]); AdminUser 它不是一个数组,显然是一个对象 可以使用类似数组的表示法访问它的原因是JS支持方括号访问表示
console.log(roles);
User {0: "AdminUser", 1: "AuthenticatedUser"}
虽然它是一个数组,但我无法获取数组长度
console.log(roles.length);
undefined
但是如果使用索引访问数组,我可以得到如下所示的值
console.log(roles[0]);
AdminUser
它不是一个数组,显然是一个对象 可以使用类似数组的表示法访问它的原因是JS支持方括号访问表示法。
由于您使用数字作为键,这可能有点误导。多亏了Pietro,我在了解Object.keys()后通过Google找到了解决方案
对于那些投了反对票的人来说,这是我今天学到的关于Object.keys()的新东西。感谢您的支持,投了反对票。:) 这不是一个数组,它是一个简单的对象。您是如何创建它的?如果它不是数组,那么console.log(角色[0])是如何创建的;console.log(角色[1]);显示对象的值。如果要将其声明为数组,请使用
var foo=['AdminUser','AuthenticatedUser]代码>@pietro909:数组是从mBaas服务返回的。如果不是数组,则说明如何使用console.log(角色[0]);和console.log(角色[1]);有效?因为对象也可以通过该语法访问,所以如果长度不可用,如何通过循环访问它们?你能给你的答案加上代码吗?使用keys Objecy.keys()并迭代索引正如@Clive所说,你只是用方括号符号访问对象。碰巧您的索引是数字,所以您认为它可能是一个数组。
Object.keys(roles).forEach(function(key) {
console.log(key + ': ' + roles[key]);
});