使用Javascript& amp将数组元素推送到不同的键Angular JS

时间:2016-02-17 09:05:17

标签: javascript angularjs

我有一个数组[0,1,2]。我尝试使用Javascript将数组值分配给JSON对象,如image1:0,image2:1,image3:2,但我感到困惑。请在这里找到我的代码

var app = angular.module('app',[]);
app.controller('EventController',function EventController($scope) {
   $scope.count = 0;  
   $scope.next = function() {
        var arr = [0,1,2];
        var result = {};
        for(var i = 0; i < arr.length; i++) {
            result.image1 = arr[i];
            result.image2 = arr[i];
            result.image3 = arr[i];
        }
        console.log(result)
   }
});

我的预期结果是Object {image1:0,image2:1,image3:2}

但实际结果是对象{image1:2,image2:2,image3:2}

我的小提琴http://jsfiddle.net/Zvy2c/67/

4 个答案:

答案 0 :(得分:2)

您可以使用括号运算符访问属性

for (var i = 0; i < arr.length; i++) {
    result['image' + (i + 1)] = arr[i];
}

答案 1 :(得分:1)

您正在循环arr并为您的所有属性分配相同的值。您将所有内容设置为0,然后1,然后2

忘记for循环,只需将属性设置为所需数组中的任何条目:

var arr = [0,1,2];
var result = {
    image1: arr[0],
    image2: arr[1],
    image3: arr[2]
};

答案 2 :(得分:0)

var app = angular.module('app',[]);
app.controller('EventController',function EventController($scope) {
   $scope.count = 0;  
   $scope.next = function() {
        var arr = [0,1,2];
        var result = {};
        for(var i = 0; i < arr.length; i++) {
            result['image' + (i+1)] = arr[i];
        }
        console.log(result)
   }
});

答案 3 :(得分:0)

您需要将for循环更改为

for(var i = 0; i < arr.length; i++) {
    result['image'+i] = arr[i];
}