简体   繁体   中英

How to push object to array in angularjs?

This is my code

$scope.studentDetails=[];

   $scope.studentIds={};
   $scope.studentIds[0]{"id":"101"}
   $scope.studentIds[1]{"id":"102"}
   $scope.studentIds[2]{"id":"103"}

in the above code when i select student id:101 i got marks from services like

   $scope.studentMarks={};
   $scope.studentMarks[0]{"marks":"67"}
   $scope.studentMarks[1]{"marks":"34"}

next i select student id:102 i got marks from services like

   $scope.studentMarks={};
   $scope.studentMarks[0]{"marks":"98"}
   $scope.studentMarks[1]{"marks":"85"}

finally i want to store student details in to one array like

$scope.studentDetails=[{"id":"101","marks":[67,34]},{"id":"102","marks":[98,85]}] 

using angularjs.

Seems like its more of a JS question than angular.

What about the Javascript push method?

$scope.studentDetails.push({id: 101, marks: [67, 34]});

You can use Array.push to add one object, or concat, to concat array into another array. See the references.

angularJS is just a library to extend Javascript. You push into an array just like you would any object in Javascript.

First off, you need to declare an array.

$scope.studentIds = []; // Array of student ids.

Then when you want to add, you push:

$scope.studentIds.push({id: "101"});

To do this naively you need to loop through the student ids and then loop through the marks object and adding it to your studentDetails object if the ids match:

var studentDetails = [];

for (var id in studentIds) {
    var studentDetail = {}; // this will be a single student
    var marks = [];    

    if (studentIds.hasOwnProperty(id)) {
        for (var mark in studentMarks) {
            if (studentMarks.hasOwnProperty(mark) && mark.id === id) {
                studentDetail.id = id;
                marks.push(mark.marks);
            }
        }
        studentDetail.marks = marks;
    }
    studentDetails.push(studentDetail);
}

$scope.studentDetails = studentDetails;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM