关于AngularJS代码中list[x]含义及数组元素推入的技术问询
关于
list[x]的含义及循环逻辑的澄清 嘿,我来帮你把这个点掰明白!先把你的代码贴出来方便咱们讨论:
var getData = function (){ $http.get('data/location') .success(function(newDataObj){ $scope.newList = []; var list = JSON.parse(newDataObj); for(var x in list){ $scope.newList.push(list[x]) } }) }
首先来回答你最关心的list[x]里的[x]是什么:
- 这里的
x是for...in循环每次迭代时拿到的键名(属性名)。在JavaScript里,for...in是用来遍历对象的可枚举属性的——数组本质上也是一种特殊的对象,它的“属性名”就是数组的索引(比如"0"、"1"这种字符串类型的数字)。 list[x]就是通过这个键名,取出list对象/数组中对应的属性值(如果是数组的话,就是对应索引位置的元素)。
再说说你的理解:
你的核心判断是对的!如果后端返回的newDataObj解析后list是一个数组,这个循环确实会遍历数组的每一个索引,把对应位置的元素依次推入$scope.newList里。不过要补充个小细节:如果list是普通对象而非数组,这个循环会遍历对象的所有可枚举属性,把每个属性的值推到新数组里。
另外提个小建议:如果确定list是数组,更推荐用for...of循环或者数组的forEach方法,因为for...in可能会意外遍历到数组原型上添加的自定义属性,避免不必要的问题~
内容的提问来源于stack exchange,提问作者Munerz
相关产品推荐
相关产品推荐

