2016-12-26 1 views
-2

JSON:толкая значений из JSON в массив

var res = 
     { 
      "response": { 
      "data": { 
       "profilesearchsnippet": [ 
       [ 
        { 
        "profileInfo": { 
         "firstname": "Sundar", 
         "lastname": "v", 
         "gender": "male", 
         "country": "Afghanistan", 
         "state": "Badakhshan", 
         "city": "Eshkashem", 
         "pincode": "", 
         "plancode": "T001", 
         "userid": 13 
        }, 
        "roleInfo": { 
         "defaultphotoid": 94 
        } 
        } 
       ], 
       [ 
        { 
        "profileInfo": { 
         "firstname": "ghg", 
         "lastname": "vbhvh", 
         "gender": "male", 
         "state": "Badakhshan", 
         "city": "Eshkashem", 
         "pincode": "454", 
         "plancode": "T001", 
         "userid": 22 
        }, 
        "roleInfo": { 
         "defaultphotoid": 171 
        } 
        } 
       ] 
       ] 
      } 
      } 
     } 

В приведенном выше JSON, мне нужно двигаться roleInfo.defaultphotoid в var image

JS:

$scope.setimage = res.response.data.profilesearchsnippet[0]; 
    for (var i = 0; i++; i<setimage.length; i++){ 
    var image = []; 
    image .push(setimage[i].roleinfo.defaultphotoid); 
    } 

Я назначил одну переменную с именем setimage и оттуда я пытаюсь вытолкнуть значения всех defaultphotoid в другое изображение массива для получения изображений всех ролей, но я могу получить только первое значение.

ответ

1

Это потому, что var image = [] находится внутри цикла for. После каждого цикла он повторно инициализируется. Вы должны поместить его вне цикла

$scope.setimage = res.response.data.profilesearchsnippet[0]; 
var image = []; 
for (var i = 0; i<$scope.setimage.length; i++){ 
    image.push($scope.setimage[i].roleinfo.defaultphotoid); 
} 
1

Вы можете использовать angular.foreach Inorder для перебора элементов и установить в переменную.

var log = []; 
angular.forEach(res.response.data.profilesearchsnippet[0], function(value, key) { 
    this.push(setimage[i].roleinfo.defaultphotoid); 
}, log); 

https://docs.angularjs.org/api/ng/function/angular.forEach

0

попробовать это:

$scope.setimage = res.response.data.profilesearchsnippet; 
var images = []; 

for (var i = 0; i<$scope.setimage.length; i++){ 
    image.push($scope.setimage[i][0].roleinfo.defaultphotoid); 
} 

будет работать.

Смежные вопросы