javascriptarraysangularjsmultidimensional-array

Many to Many mapping objects in javascript


Am having two sets of arrays :

$scope.selectedEmployees = ["1001", "1002"];
$scope.selectedTasks = ["Task1", "Task2"];

I wanted to generate an array of objects by combining the employees and tasks like a many to many relationship.The length of $scope.selectedEmployees and $scope.selectedTasks may vary :

newArray=[
    {
        "empId": 1001,
        "task": "Task1"
    },
    {
        "empId": 1001,
        "task": "Task2"
    },
    {
        "empId": 1002,
        "task": "Task2"
    },
    {
        "empId": 1002,
        "task": "Task2"
    }
]

The method I tried:

 var newArray=[];
         for (var i = 0; i <$scope.selectedEmployees.length; i++) {
           for (var j = 0; j <$scope.selectedTasks .length; j++) {
    newArray.push({"empId":$scope.selectedEmployees[i],
                  "task":$scope.selectedIntervention[j]
                 })
                   }
                }

But i'm not able to get the required format.Any help will be grateful.


Solution

  • http://jsfiddle.net/zuv8y9wk/

    Issues were a missing < and instead of selectedTasks, selectedIntervention was used.

    See working code below:

    var $scope = {};
    $scope.selectedEmployees = ["1001", "1002"];
    $scope.selectedTasks = ["Task1", "Task2"];
    var newArray = [];
    for (var i = 0; i < $scope.selectedEmployees.length; i++) {
        for (var j = 0; j < $scope.selectedTasks.length; j++) {
            newArray.push({
                "empId": $scope.selectedEmployees[i],
                "task": $scope.selectedTasks[j]
            })
        }
    }
    console.log(newArray)