Asked by:
How to filter and loop and create JSON Object.

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