1

create a json array structure with key using angularjs. I don't have any idea to how to push data to create json array structure with key. I want to json array using below json data.

$scope.category = [{"id": 20, "name": "vegetable"},
    {"id": 30, "name": "fruits"}];

$scope.data = [
    { "id" : 1,"name" : "tomato", "categoryId" : 20},
    { "id" : 2,"name" : "potato", "categoryId" : 20},
    { "id" : 3,"name" : "orange", "categoryId" : 30},
    { "id" : 4,"name" : "apple", "categoryId" : 30},
    { "id" : 4,"name" : "onion", "categoryId" : 20}];

for(var i=0; i<$scope.category.length; i++) {
    for(var j=0; j<$scope.data.length; j++) {
        if($scope.category[i].id === $scope.data[j].categoryId) {

        }
    }
}

I want output like this:

  {
    "vegetable" : [
        { "id" : 1, "name" : "tomato"},
        { "id" : 2, "name" : "potato"},
        { "id" : 3, "name" : "onion"},
    ],
    "fruits" : [
        { "id" : 3, "name" : "orange"},
        { "id" : 4, "name" : "apple"}
    ]
 }

1 Answer 1

4

To get your desired format you need to categoryId from json before injecting it.

Code

$scope.myArray = [];
for(var i=0; i<$scope.category.length; i++) {
    var array = [];
    for(var j=0; j<$scope.data.length; j++) {
        if($scope.category[i].id === $scope.data[j].categoryId) {
            var index = array.push($scope.data[j]);
            delete array[index-1].categoryId;
        }
    }
    $scope.myArray[$scope.category[i].name] = array;
}
Sign up to request clarification or add additional context in comments.

2 Comments

or if you just want id and name form data use this array.push({ id: $scope.data[j].id, name: $scope.data[j].name });
@JAG Take a look at my solution

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.