ng-repeat with associative array

时间:2014-11-06 14:09:08

标签: javascript arrays angularjs angularjs-ng-repeat

好的尝试做我应该做的事情,我需要使用ng-repeat和关联数组。完全失去了为什么这不起作用。它与基于数字的数组键完美配合,但不适用于文本字符。

function HelloCntl($scope) {
    $scope.friends = [];
     $scope.friends[0] ='John',
     $scope.friends[1]= 'Mary',
     $scope.friends['aksnd']= 'Mike',
     $scope.friends['alncjd']= 'Adam',
     $scope.friends['skdnc']= 'Julie'
}

----

 <div ng-controller="HelloCntl">
 <ul>
     <li ng-repeat="friend in friends">
         <span>{{friend}}</span>
     </li>
 </ul>
 </div>

我也把它放在一起这是小提琴,以显示发生了什么 http://jsfiddle.net/b9g0x7cw/4/

我在这里做错了什么?我错过了一些明显的东西吗?

谢谢你们!

2 个答案:

答案 0 :(得分:3)

在JavaScript中,我们没有关联数组 - 我们有对象:

更新了小提琴:http://jsfiddle.net/edut808r/

angular.module('MyApp', []).filter('removeAdam', function() {

})
.controller('HelloCntl', function($scope) {
    $scope.friends = {
        asdf:'John',
        dkfls: 'Mary',
        aksnd: 'Mike',
        alncjd: 'Adam',
        skdnc: 'Julie'
    }
});

答案 1 :(得分:0)

不要使用关联数组!

http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/

2不使用关联数组的原因

  • 长度为0。
  • 您实际上是在编辑数组对象的属性而不是数组键。

http://jsfiddle.net/3kppwhh6/1/

// using array
var friendsArr = [];
friendsArr['one']='one';
friendsArr['two']= 'two';

friendsArr.length; // 0
Object.keys(friendsArr).length; //2

//Using object
var friendsObj = {};
friendsObj['one'] ='one';
friendsObj['two'] = 'two';

Object.keys(friendsObj).length; //2