locked
How to filter and loop and create JSON Object. RRS feed

  • Question

  • User-930371450 posted

    Hi Team,

    How to filter and loop and create JSON Object.

    var objDepartments=
    [
    {DepartmentID: 13, NAME: "US" },
    {DepartmentID: 108, NAME: "UK" }
    },

    ];

    var users=
    [
    {DepartmentID: 13, NAME: "User1", Score:100},
    {DepartmentID: 13, NAME: "User2", Score:100},
    {DepartmentID: 13, NAME: "User3", Score:100},
    {DepartmentID: 13, NAME: "User4", Score:100},
    {DepartmentID: 108, NAME: "User11", Score:90},
    {DepartmentID: 108, NAME: "User12", Score:90},
    {DepartmentID: 162, NAME: "User122", Score:80}

    ];

    var departments = [];
    while (objDepartments.length > 0) {
    var objPrintModuleScore=[];

    departments = objDepartments.splice(0, 2)

    console.log(departments)


    $.each(departments, function (idx, obj) {

    objPrintModuleScore += users.filter(function (e) {
    return e.DepartmentID == obj.DepartmentID;
    });



    });



    I need this Json object after filter and department loop

    ---------------------------------------
    objPrintModuleScore=[
    {DepartmentID: 13, NAME: "User1", Score:100},
    {DepartmentID: 13, NAME: "User2", Score:100},
    {DepartmentID: 13, NAME: "User3", Score:100},
    {DepartmentID: 13, NAME: "User4", Score:100},
    {DepartmentID: 108, NAME: "User11", Score:90},
    {DepartmentID: 108, NAME: "User12", Score:90}
    ];

    Sunday, January 26, 2020 8:06 PM

All replies

  • User1535942433 posted

    Hi SSK_Nani,

    Accroding to your codes,I think you could push the value in objPrintModuleScore,and output the object using JSON.stringify.

    More details,you could refer to below codes:

    <script>
            $(function () {
                var objDepartments =
                    [
                        { DepartmentID: 13, NAME: "US" },
                        { DepartmentID: 108, NAME: "UK" }
                    ];
                var users =
                    [
                        { DepartmentID: 13, NAME: "User1", Score: 100 },
                        { DepartmentID: 13, NAME: "User2", Score: 100 },
                        { DepartmentID: 13, NAME: "User3", Score: 100 },
                        { DepartmentID: 13, NAME: "User4", Score: 100 },
                        { DepartmentID: 108, NAME: "User11", Score: 90 },
                        { DepartmentID: 108, NAME: "User12", Score: 90 },
                        { DepartmentID: 162, NAME: "User122", Score: 80 }
    
                    ];
                var departments = [];
                var x;
                while (objDepartments.length > 0) {
                    var objPrintModuleScore = [];
                    departments = objDepartments.splice(0, 2)
                    console.log(departments)
                    $.each(departments, function (idx, obj) {
                        objPrintModuleScore.push(users.filter(function (e) {
                           return  e.DepartmentID == obj.DepartmentID;
                        })
                        )
                    });
                    alert(JSON.stringify(objPrintModuleScore))
                  
                   
                }
            })
    
        </script>

    Result:

    Best regards,

    Yijing Sun

    Monday, January 27, 2020 5:18 AM
  • User-930371450 posted

    In this Json object extra [] is adding, please tell me how to remove

    [[{"DepartmentID":13,"NAME":"USER1","Score":4},{"DepartmentID":13,"NAME":"USER2","Score":2}]]

    Monday, January 27, 2020 9:12 AM
  • User1535942433 posted

    Hi SSK_Nani,

    As far as I think,you could you could push objPrintModuleScore  in result.

    More details,you could refer to below codes:

    <script src="Scripts/jquery-3.2.1.min.js"></script>
        <script>
            $(function () {
                var objDepartments =
                    [
                        { DepartmentID: 13, NAME: "US" },
                        { DepartmentID: 108, NAME: "UK" }
                    ];
                var users =
                    [
                        { DepartmentID: 13, NAME: "User1", Score: 100 },
                        { DepartmentID: 13, NAME: "User2", Score: 100 },
                        { DepartmentID: 13, NAME: "User3", Score: 100 },
                        { DepartmentID: 13, NAME: "User4", Score: 100 },
                        { DepartmentID: 108, NAME: "User11", Score: 90 },
                        { DepartmentID: 108, NAME: "User12", Score: 90 },
                        { DepartmentID: 162, NAME: "User122", Score: 80 }
    
                    ];
                var departments = [];
                var x;
                while (objDepartments.length > 0) {
                    var objPrintModuleScore = [];
                    departments = objDepartments.splice(0, 2)
                    console.log(departments)
                     $.each(departments, function (idx, obj) {
                        objPrintModuleScore.push(users.filter(function (e) {
                            return e.DepartmentID == obj.DepartmentID;
                        })
                        )
                    });
                    var result = [];
                    for (var i = 0; i < departments.length; i++) {
                        for (var k = 0; k < objPrintModuleScore[i].length; k++) {
                            result.push(objPrintModuleScore[i][k]);
                        }
                    }                 
                    alert(JSON.stringify(result))
                }
            })     
        </script>

    Result:

    Best regards,

    Yijing Sun

    Wednesday, January 29, 2020 11:53 AM