2017-03-20 4 views
1

Dies ist Array von Array-Daten in einer Variablen "Daten". Ich möchte Array von Array-Daten zu JSON konvertieren AngularJS und verwenden in Ansicht mit Objekt $ scopeWie Array of Array zu JSON in Angular JS konvertieren?

$scope.data =[["Name", "Age", "Address"], 
       [ "A", "43", "CA" ], 
       [ "B", "23", "VA" ], 
       [ "C", "24", "NY" ]] 

Funktion Array von Array zu JSON konvertieren schrieb:

$scope.jsonData = function() { 
      var result = []; 
      var keys = data[0]; 

      for (var i = 1; i < data.length; i++) { 
       var item = {}; 
       item[keys[0]] = data[i][0]; 
       item[keys[1]] = data[i][1]; 
       item[keys[2]] = data[i][2]; 
       result.push(item); 
      } 
return result 
     }; 

ich nicht JSON sehe Ausgabe, wo mache ich falsch?

gewünschte Ausgabe:

[ 
    { 
    "Name": "A", 
    "Age": "43", 
    "Address": "CA" 
    }, 
    { 
    "Name": "B", 
    "Age": "23", 
    "Address": "VA" 
    }, 
    { 
    "Name": "C", 
    "Age": "24", 
    "Address": "NY" 
    } 
] 
+1

Sie können JSON.stringify ($ scope.data) direkt verwenden. –

Antwort

1

Sie $ scope infront Daten fehlen,

for (var i = 1; i < $scope.data.length; i++) { 
    var item = {}; 
    item[keys[0]] = $scope.data[i][0]; 
    item[keys[1]] = $scope.data[i][1]; 
    item[keys[2]] = $scope.data[i][2]; 
    $scope.result.push(item); 
} 

DEMO

var demoApp = angular.module('demoApp', []); 
 
var controllers = {}; 
 
controllers.SimpleController = function ($scope) { 
 
$scope.data =[["Name", "Age", "Address"], 
 
       [ "A", "43", "CA" ], 
 
       [ "B", "23", "VA" ], 
 
       [ "C", "24", "NY" ]]; 
 
       $scope.result = []; 
 
    $scope.jsonData = function() { 
 
      var result = []; 
 
      var keys = $scope.data[0]; 
 

 
      for (var i = 1; i < $scope.data.length; i++) { 
 
       var item = {}; 
 
       item[keys[0]] = $scope.data[i][0]; 
 
       item[keys[1]] = $scope.data[i][1]; 
 
       item[keys[2]] = $scope.data[i][2]; 
 
       $scope.result.push(item); 
 
      } 
 
      console.log($scope.result); 
 
};   
 
       
 
}; 
 
demoApp.controller(controllers);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script> 
 
<div ng-app="demoApp" ng-controller="SimpleController"> 
 
<div ng-init="jsonData()"> 
 
    
 
</div> 
 
</div>

0

Lösung von how-to-convert-array-of-arrays-to-json.

Mit Array.prototype.slice(), Array.prototype.map() und Array.prototype.forEach():

let arrays = [ 
["Name", "Age", "Address"], 
["A", "43", "CA"], 
["B", "23", "VA"], 
["C", "24", "NY"] 
]; 

let keys = arrays[0]; 
let values = arrays.slice(1); 
let objects = values.map(array => { 
let object = {}; 

keys.forEach((key, i) => object[key] = array[i]); 

return object; 
}); 

console.log(JSON.stringify(objects)); 
0

Basierend auf Sie Array-Struktur Ich glaube, Sie wollen, dass sie schön angezeigt, so ich würde die html wie folgt machen:

<ul> 
    <li ng-repeat="c in contacts track by $index"> 
     <h3>c.Name</h3> 
     <h3>c.Age</h3> 
     <h3>c.Address</h3> 
    </li> 
</ul> 

Und Sie Javascript (Winkel) Teil:

var generateArray = function() { 
     var result = []; 
     var keys = data[0]; 

     for (var i = 1; i < data.length; i++) { 
      var item = {}; 
      item[keys[0]] = data[i][0]; 
      item[keys[1]] = data[i][1]; 
      item[keys[2]] = data[i][2]; 
      result.push(item); 
     } 
     return result 
     }; 

$scope.contacts = generateArray(); 
0

Sie vermissen ed scope value .. also, fügen Sie Scope-Daten hinzu und verwenden Sie folgende Struktur ...

 $scope.jsonData = function() { 
     var result = []; 
     var keys = $scope.data[0]; 

     for (var i = 1; i < $scope.data.length; i++) { 
      var item = {}; 
      var data = $scope.data[i]; 
      item[keys[0]] = data[0]; 
      item[keys[1]] = data[1]; 
      item[keys[2]] = data[2]; 
      result.push(item); 
     } 
    };