对数组中对象的误解

时间:2017-03-20 12:40:24

标签: javascript

要将我的对象转换为数组,我正在使用此功能:

$scope.valuesToArray = function(obj) 
{
    return Object.keys(obj).map(function (key) { return obj[key]; });
}

但是我不明白为什么我的数组中使用“Array [2]”而不是“Array [0]”:

enter image description here

实际上,我并不关心这个数组的形式,但似乎这种方式不允许我使用,例如:

 $scope.createdEvent = $scope.valuesToArray($scope.createdEvent);
 
console.log("What I have :", $scope.createdEvent);

console.log("I want to print this : ", $scope.createdEvent.creatorName);
 
 // CONSOLE.LOG GOT UNDEFINED

编辑

更具体地说,我想了解你可以在图片上看到的两个阵列之间的区别。因为它们是,它们包含完全相同的对象和信息。但是当显示“Array [2]”时,当我试图将它复制到另一个数组中时,就像这样:

 $scope.newCrea = [];
 $scope.newCrea = $scope.createdEvent;
 console.log("TEST", $scope.newCrea); // GOT UNDEFINED

或者当我尝试在我的HTML视图中使用他的属性对象时,比如{{newCrea.creatorName}},我什么也没得到。

$ scope.createdEvent包含两个对象,foreach有两个属性:“creatorName”和“dateEvent”。

1 个答案:

答案 0 :(得分:1)

您的代码正常,它会保留索引

对于"类似数组的对象"使用:

var myObj = {
    1: ['c', 'd'],
    2: ['a', 'b']
 };
 var myArr = Array.prototype.slice.call(myObj, 0);

您可以在这里查看http://www.nfriedly.com/techblog/2009/06/advanced-javascript-objects-arrays-and-array-like-objects/