新的Array()转换为对象?

时间:2015-07-24 22:17:37

标签: javascript arrays json

这很奇怪,但是我的新阵列似乎是一个对象......

var report = [];

console.log('Report type: ' + typeof report);

这会产生结果:Report type: object,我已经在Chrome,Firefox和IE中确认了这一结果。

我还尝试使用var report = new Array()和其他变体,例如var report = new Array('1', '2', '3')。到目前为止,它们都产生了相同的结果。我觉得我又是一个新的JavaScript开发者......我在这里想念的是什么?

仅供参考,我的最终目标是将一些JSON数据转换为数组,以便我可以在Angular应用程序中使用ng-repeat过滤结果,因为过滤器显然不能处理对象。因此,如果您对此部分有答案,请随时分享。

3 个答案:

答案 0 :(得分:2)

是的,您的代码是正确的,原因是因为数组不是本机类型,数组实际上是使用数字作为键的对象,

您可以通过使用instanceof而不是type:

来验证数组是否为数组
[] instanceof Array

答案 1 :(得分:1)

情况一直如此。来自MDN:

  

//使用Array.isArray或Object.prototype.toString.call

     

//区分常规对象与数组

     

typeof [1,2,4] ==='object';

我对角度没有多大了解,但是数组总是typeof [] === 'object';所以只需尝试使用它就像正常一样。

答案 2 :(得分:1)

由于typeof数组为'object',因此内置了实用工具以检查

angular.isArray()
angular.isObject()

这些只是文档网站左上角始终可见的众多实用程序中的两个...花一些时间浏览整个文档网站

Angular functions docs