var app = angular.module('app', []);
app.controller('appController', ['$scope', function($scope) {
$scope.allTheme = [{
"theme_id": 2,
"productData": [{
"store_id": 1,
"product_id": 3,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - FD",
}, {
"store_id": 1,
"product_id": 4,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - FE"
}, {
"store_id": 1,
"product_id": 8,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - QS",
}]
}, {
"theme_id": 5,
"productData": [{
"store_id": 1,
"product_id": 99,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - FD"
}, {
"store_id": 1,
"product_id": 100,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - FE"
}, {
"store_id": 1,
"product_id": 101,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - QS"
}]
}, {
"theme_id": 7,
"productData": [{
"store_id": 1,
"product_id": 129,
"style_id": 1,
"size_id": 3,
"theme_id": 7,
"name": "Nautical"
}]
}, {
"theme_id": 10,
"productData": [{
"store_id": 1,
"product_id": 12,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - FD"
}, {
"store_id": 1,
"product_id": 13,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - FE"
}, {
"store_id": 1,
"product_id": 17,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - QS"
}]
}];
$scope.targetField = null;
$scope.selectBoxClick = function($event) {
if ($event.target === null) {
return;
}
$scope.targetField = $event.target;
}
$scope.changeTheme = function(theme, selectedProducts) {
console.log("chagne Theme");
if ($scope.targetField) {
$scope.activeTheme = theme;
if (selectedProducts) {
$scope.isSizedAndThemeSelected = true;
var targetSelect_ = $($scope.targetField);
$scope.targetField = null;
targetSelect_.closest(".owl-item").siblings().each(function() {
if ($(this).find("select").length) {
var option = $(this).find("select option").eq(0);
//$(this).find("select").selectbox("change", option.attr('value'), option.html());
var select_ = $(this).find("select");
select_.val(option.attr('value'));
select_.prop('selectedIndex',0);
}
})
} else {
$scope.isSizedAndThemeSelected = false;
$scope.activeTheme = {};
}
}
}
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="http://project-progress.net/projects/kodak-express-local-angular/js/jquery.selectbox-0.2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div data-ng-app="app">
<div data-ng-controller="appController">
<div data-ng-repeat="theme in allTheme" style="width:500px;" class="owl-item">
<div class="select-box" data-ng-if="theme.productData.length > 1">
<!--<select class="customSelect" data-ng-model="theme.SelectedProduct" data-ng-click="selectBoxClick($event)" data-ng-change="changeTheme(theme, theme.SelectedProduct)">
<option value="">Select an option</option>
<option data-custom-select-item data-ng-repeat="product in theme.productData" data-ng-value="{{product}}">{{product.name}}</option>
</select>-->
<select data-ng-model="theme.SelectedProduct" data-ng-click="selectBoxClick($event)" data-ng-change="changeTheme(theme, theme.SelectedProduct)">
<option value="">Select an option</option>
<option data-ng-repeat="product in theme.productData" data-ng-value="{{product}}">{{product.name}}</option>
</select>
</div>
</div>
</div>
</div>
If I select 'Boy - FD' from the first select box option and after second select box option, choose 'boy-fed' in both can function fire, but again, select first selectbox 'Boy-FD' option than can function does not work. thanks in advance.
The reason why your dropdowns are not working properly is because when you update the DOM directly then your data models linked with "data-ng-model" dont get updated, because you updated the dropdowns outside of angular's digest cycle.
Here is how i got your dropdowns to work with angular, i hope this helps.
var app = angular.module('app', []);
app.controller('appController', ['$scope', function($scope) {
$scope.allTheme = [{
"theme_id": 2,
"productData": [{
"store_id": 1,
"product_id": 3,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - FD",
}, {
"store_id": 1,
"product_id": 4,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - FE"
}, {
"store_id": 1,
"product_id": 8,
"style_id": 1,
"size_id": 3,
"theme_id": 2,
"name": "Boy - QS",
}]
}, {
"theme_id": 5,
"productData": [{
"store_id": 1,
"product_id": 99,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - FD"
}, {
"store_id": 1,
"product_id": 100,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - FE"
}, {
"store_id": 1,
"product_id": 101,
"style_id": 1,
"size_id": 3,
"theme_id": 5,
"name": "Blank - QS"
}]
}, {
"theme_id": 7,
"productData": [{
"store_id": 1,
"product_id": 129,
"style_id": 1,
"size_id": 3,
"theme_id": 7,
"name": "Nautical"
}]
}, {
"theme_id": 10,
"productData": [{
"store_id": 1,
"product_id": 12,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - FD"
}, {
"store_id": 1,
"product_id": 13,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - FE"
}, {
"store_id": 1,
"product_id": 17,
"style_id": 1,
"size_id": 3,
"theme_id": 10,
"name": "Girl - QS"
}]
}];
$scope.changeTheme = function(theme) {
console.log("change Theme");
$scope.activeTheme = theme;
angular.forEach($scope.allTheme, function(item, index) {
if (item.SelectedProduct != theme.SelectedProduct) {
item.SelectedProduct = "";
}
});
console.log(theme.SelectedProduct);
}
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="http://project-progress.net/projects/kodak-express-local-angular/js/jquery.selectbox-0.2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div data-ng-app="app">
<div data-ng-controller="appController">
<div data-ng-repeat="theme in allTheme" style="width:500px;" class="owl-item">
<div class="select-box" data-ng-if="theme.productData.length > 1">
<select data-ng-model="theme.SelectedProduct" data-ng-change="changeTheme(theme)">
<option value="">Select an option</option>
<option data-ng-repeat="product in theme.productData" data-ng-value="{{product}}">{{product.name}}</option>
</select>
</div>
</div>
</div>
</div>
Related
This might seem trivial but I'm having a hard time figuring this out.
I have an array like below:
Array 1:
[
{
"id": 1,
"date": "2019-03-27",
"time": 1,
"max_tasks": 3,
"reservations": [
5,
2
]
},
{
"id": 2,
"date": "2019-03-28",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 3,
"date": "2019-03-29",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 4,
"date": "2019-03-30",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 5,
"date": "2019-03-31",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 6,
"date": "2019-04-01",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 7,
"date": "2019-04-02",
"time": 1,
"max_tasks": 3,
"reservations": [
3
]
}
]
Here the reservations contains id for which i need to use another array as shown below:
Array 2:
[
{
"id": 5,
"app": 1,
"comment": "test 5"
},
{
"id": 2,
"app": 1,
"comment": "test 2"
}
]
Expected:
I need a way to include Array 2 data inside Array 1 where I use the id from reservations of Array 1 and pull the corresponding object from Array 2. Finally I need to return Array 1 with these objects added from Array 2 .
I'm using Vue and hope to get this array computed in getters so I can get this in my component and map there directly. If there are any better ways of doing this I'm open to any suggestions
This is what I'm trying to get as output:
`
[
{
'id': 1,
'date': '2019-03-27',
'time': 1,
'max_tasks': 3,
'reservations': [
{
'id': 5,
'app': 1,
'comment': 'test 5'
},
{
'id': 2,
'app': 1,
'comment': 'test 2'
}
]
},
{
'id': 2,
'date': '2019-03-28',
'time': 1,
'max_tasks': 3,
'reservations': []
},
{
'id': 3,
'date': '2019-03-29',
'time': 1,
'max_tasks': 3,
'reservations': []
},
{
'id': 4,
'date': '2019-03-30',
'time': 1,
'max_tasks': 3,
'reservations': []
},
{
'id': 5,
'date': '2019-03-31',
'time': 1,
'max_tasks': 3,
'reservations': []
},
{
'id': 6,
'date': '2019-04-01',
'time': 1,
'max_tasks': 3,
'reservations': []
},
{
'id': 7,
'date': '2019-04-02',
'time': 1,
'max_tasks': 3,
'reservations': [
3
]
}
]
`
Thanks for your time.
It may not be the best solution but give it a try.
let arr1 = [{
"id": 1,
"date": "2019-03-27",
"time": 1,
"max_tasks": 3,
"reservations": [
5,
2
]
},
{
"id": 2,
"date": "2019-03-28",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 3,
"date": "2019-03-29",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 4,
"date": "2019-03-30",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 5,
"date": "2019-03-31",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 6,
"date": "2019-04-01",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 7,
"date": "2019-04-02",
"time": 1,
"max_tasks": 3,
"reservations": [
3
]
}
]
let arr2 = [{
"id": 5,
"app": 1,
"comment": "test 5"
},
{
"id": 2,
"app": 1,
"comment": "test 2"
}
]
arr1.forEach(o => {
let updatedReverations = []
o.reservations.forEach(r => {
updatedReverations.push(arr2.filter(a2 => r === a2.id)[0] || r)
})
o.reservations = updatedReverations
})
console.log(arr1)
perhaps this works
var arr1 = [
{
"id": 1,
"date": "2019-03-27",
"time": 1,
"max_tasks": 3,
"reservations": [
5,
2
]
},
{
"id": 2,
"date": "2019-03-28",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 3,
"date": "2019-03-29",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 4,
"date": "2019-03-30",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 5,
"date": "2019-03-31",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 6,
"date": "2019-04-01",
"time": 1,
"max_tasks": 3,
"reservations": []
},
{
"id": 7,
"date": "2019-04-02",
"time": 1,
"max_tasks": 3,
"reservations": [
3
]
}
]
var arr2 = [
{
"id": 5,
"app": 1,
"comment": "test 5"
},
{
"id": 2,
"app": 1,
"comment": "test 2"
}
]
for (var i = 0; i != arr1.length; ++i) {
arr1[i].reservations = arr1[i].reservations.map(id => {
var reservation = arr2.find(reservation => reservation.id == id)
return reservation || id;
});
}
It will try to find reservation in array 2 if not it will not replace the id.
below function will give you new copy of merged array.
function getMergedArray(arr1,arr2){
return arr1.map(item=>{
if(item.reservations.length>0){
let newReservations= item.reservations.map(reservationId=>{
let foundReservation = arr2.find(reservation=>{
return reservation.id === reservationId
})
if(foundReservation){
return foundReservation;
}
else{
return reservationId;
}
})
item.reservations = newReservations;
}
return item;
});
}
I have a JSON data which is something like this, And my requirement to fetch the data of inner most children i.e hierarchyLevel: 4. And this JSON data is not static, the hierarchyLevel can go any thing like 5, 6, 7 any thing.
Please help to find solution in javascript.
{
"hierarchylist": [
{
"hierarchyId": 10,
"hierarchyLevel": 0,
"name": "ABC",
"parentId": 0,
"children": [
{
"hierarchyId": 12,
"hierarchyLevel": 1,
"name": "ABC-Child1",
"parentId": 10,
"children": [
{
"hierarchyId": 2,
"hierarchyLevel": 2,
"name": "People Management & Development1 ",
"parentId": 12,
"children": [
{
"hierarchyId": 5,
"hierarchyLevel": 3,
"name": "Resourcing2_1",
"parentId": 2,
"children": [
{
"hierarchyId": 19,
"hierarchyLevel": 4,
"name": "Resource Request ",
"parentId": 5,
"children": [],
"docId": 19,
"docstatusid": 20
}
]
}
]
}
]
}
]
}
]
}
Thanks.
This should get you the inner-most one:
let data = {
"hierarchylist": [
{
"hierarchyId": 10,
"hierarchyLevel": 0,
"name": "ABC",
"parentId": 0,
"children": [
{
"hierarchyId": 12,
"hierarchyLevel": 1,
"name": "ABC-Child1",
"parentId": 10,
"children": [
{
"hierarchyId": 2,
"hierarchyLevel": 2,
"name": "People Management & Development1 ",
"parentId": 12,
"children": [
{
"hierarchyId": 5,
"hierarchyLevel": 3,
"name": "Resourcing2_1",
"parentId": 2,
"children": [
{
"hierarchyId": 19,
"hierarchyLevel": 4,
"name": "Resource Request ",
"parentId": 5,
"children": [],
"docId": 19,
"docstatusid": 20
}
]
}
]
}
]
}
]
}
]
}
let children = data.hierarchylist[0].children;
while(children[0] && children[0].children && children[0].children.length) {
children = children[0].children;
}
console.log(children);
You can try the while loop, here's the example
var children = json['hierarchylist']['children'][0];
while(typeof children !== 'undefined') {
children = children['children'][0];
}
console.log(children);
Any help is very much appreciated.
Basically I am using an api from mashape, but I'm a bit of a newbie to JSON files.
What I want to do is create a load of jquery variables for each teams total points.
Bare in mind that the teams change position in the JSON file depending on their position in the table.
Below is my jquery code so far (without the auth code) and the JSON file.
$.ajax({
url: 'https://heisenbug-premier-league-live-scores-v1.p.mashape.com/api/premierleague/table',
type: 'GET',
data: {},
dataType: 'json',
success: function(data) {
$(data.records).each(function(index, value) {
});
console.dir((data.source));
},
error: function(err) { alert(err); },
beforeSend: function(xhr) {
xhr.setRequestHeader("X-Mashape-Authorization",
"Auth Code");
}
});
And the JSON file.
{
"records": [
{
"team": "Manchester City",
"played": 10,
"win": 8,
"draw": 0,
"loss": 2,
"goalsFor": 29,
"goalsAgainst": 12,
"points": 24
},
{
"team": "Arsenal",
"played": 10,
"win": 7,
"draw": 2,
"loss": 1,
"goalsFor": 16,
"goalsAgainst": 6,
"points": 23
},
{
"team": "Tottenham",
"played": 10,
"win": 5,
"draw": 4,
"loss": 1,
"goalsFor": 18,
"goalsAgainst": 7,
"points": 19
},
{
"team": "Leicester",
"played": 10,
"win": 5,
"draw": 4,
"loss": 1,
"goalsFor": 16,
"goalsAgainst": 13,
"points": 19
},
{
"team": "Manchester United",
"played": 10,
"win": 5,
"draw": 4,
"loss": 1,
"goalsFor": 12,
"goalsAgainst": 4,
"points": 19
},
{
"team": "West Ham",
"played": 10,
"win": 4,
"draw": 4,
"loss": 2,
"goalsFor": 16,
"goalsAgainst": 12,
"points": 16
},
{
"team": "Liverpool",
"played": 9,
"win": 4,
"draw": 3,
"loss": 2,
"goalsFor": 11,
"goalsAgainst": 11,
"points": 15
},
{
"team": "Norwich",
"played": 10,
"win": 4,
"draw": 3,
"loss": 3,
"goalsFor": 12,
"goalsAgainst": 10,
"points": 15
},
{
"team": "Southampton",
"played": 10,
"win": 4,
"draw": 2,
"loss": 4,
"goalsFor": 17,
"goalsAgainst": 13,
"points": 14
},
{
"team": "Chelsea",
"played": 10,
"win": 4,
"draw": 2,
"loss": 4,
"goalsFor": 15,
"goalsAgainst": 14,
"points": 14
},
{
"team": "West Bromwich Albion",
"played": 11,
"win": 4,
"draw": 2,
"loss": 5,
"goalsFor": 14,
"goalsAgainst": 17,
"points": 14
},
{
"team": "Crystal Palace",
"played": 11,
"win": 4,
"draw": 2,
"loss": 5,
"goalsFor": 12,
"goalsAgainst": 12,
"points": 14
},
{
"team": "Watford",
"played": 11,
"win": 4,
"draw": 2,
"loss": 5,
"goalsFor": 11,
"goalsAgainst": 10,
"points": 14
},
{
"team": "Stoke",
"played": 9,
"win": 4,
"draw": 1,
"loss": 4,
"goalsFor": 10,
"goalsAgainst": 9,
"points": 13
},
{
"team": "Swansea",
"played": 10,
"win": 3,
"draw": 4,
"loss": 3,
"goalsFor": 9,
"goalsAgainst": 12,
"points": 13
},
{
"team": "Everton",
"played": 11,
"win": 3,
"draw": 4,
"loss": 4,
"goalsFor": 23,
"goalsAgainst": 20,
"points": 13
},
{
"team": "Sunderland",
"played": 10,
"win": 3,
"draw": 2,
"loss": 5,
"goalsFor": 12,
"goalsAgainst": 11,
"points": 11
},
{
"team": "Bournemouth",
"played": 9,
"win": 2,
"draw": 4,
"loss": 3,
"goalsFor": 10,
"goalsAgainst": 13,
"points": 10
},
{
"team": "Newcastle United",
"played": 10,
"win": 2,
"draw": 4,
"loss": 4,
"goalsFor": 14,
"goalsAgainst": 14,
"points": 10
},
{
"team": "Aston Villa",
"played": 9,
"win": 0,
"draw": 3,
"loss": 6,
"goalsFor": 6,
"goalsAgainst": 13,
"points": 3
}
]
}
Thank You Very Much!
To create an object and add the total points for each team, you'll need to create a map (key/value) where the key is each team's name and the value is the total points for each team.
I'm hosting your data on MyJSON.
Here's a function that retrieves the data from the remote server, and initializes an object containing the total points for each team:
function getData() {
// https://api.myjson.com/bins/1c6utx
var teamScores = {};
$.get("https://api.myjson.com/bins/1c6utx", function(data, status){
$.each(data.records, function(index, value) {
if (!teamScores[value.team]) {
teamScores[value.team] = 0;
}
teamScores[value.team] += value.points;
});
console.log(JSON.stringify(teamScores));
});
}
/* Output:
{"Manchester City":24,"Arsenal":23,"Tottenham":19,"Leicester":19,"Manchester United":19,"West Ham":16,"Liverpool":15,"Norwich":15,"Southampton":14,"Chelsea":14,"West Bromwich Albion":14,"Crystal Palace":14,"Watford":14,"Stoke":13,"Swansea":13,"Everton":13,"Sunderland":11,"Bournemouth":10,"Newcastle United":10,"Aston Villa":3}
*/
You can check this fiddle to see it in action. Hope this helps!
I am using angular 1.5.5
function GetDashboardForAllEmployees()
{
var response = eRotaService.GetDashboard();
response.then(function (data) {
$scope.weekDays = data.data;
console.log(data.data);
}, function () {
alert("Failed to load dashboard.");
})
}
.NET service returns json :
{
"weekDays": [{
"name": "Monday",
"display": 0,
"employees": [{
"employeeId": 1,
"name": "Adam",
"start": 8,
"finish": 16,
"gridSetup": {
"sizeX": 8,
"sizeY": 1,
"row": 0,
"col": 8
}
}, {
"employeeId": 2,
"name": "Paul",
"start": 16,
"finish": 22,
"gridSetup": {
"sizeX": 6,
"sizeY": 1,
"row": 0,
"col": 16
}
}]
}, {
"name": "Tuesday",
"display": 1,
"employees": [{
"employeeId": 1,
"name": "Bob",
"start": 10,
"finish": 18,
"gridSetup": {
"sizeX": 8,
"sizeY": 1,
"row": 0,
"col": 10
}
}, {
"employeeId": 2,
"name": "Paul",
"start": 16,
"finish": 22,
"gridSetup": {
"sizeX": 6,
"sizeY": 1,
"row": 0,
"col": 16
}
}]
}]
}
I am planning to display each day of the week, but only first day will show(Monday).
<div class="row" ng-repeat="week in weekDays">
#for (int i = -2; i < 22; i+=2 )
{
<div class="col-sm-1">
#string.Format("{0}:00", i + 2)
</div>
}
<hr />
<div class="col-sm-12">
<h3>{{week[$index].name}}</h3>
<hr />
<div class="row" ng-repeat="employee in week[$index].employees">
<div class="col-sm-12">
<h4>{{employee.name}}</h4>
<hr />
<div gridster>
<ul>
<li gridster-item="employee.gridSetup" ng-cloak>
<div class="panel-default" >
<div class="panel-heading">
<h5>From : {{employee.start}} to {{employee.finish}}</h5>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
I tried to use ng-repeat without $index but result was blank page (no angular js error).
<div class="row" ng-repeat="week in weekDays">
hm mustn't it be
<div class="row" ng-repeat="week in weekDays.weekDays">
The Jason-String looks somewat formated like this:
{
"weekDays": [
{
"name": "Monday",
"display": 0,
"employees": [
{
"employeeId": 1,
"name": "Adam",
"start": 8,
"finish": 16,
"gridSetup": {
"sizeX": 8,
"sizeY": 1,
"row": 0,
"col": 8
}
},
{
"employeeId": 2,
"name": "Paul",
"start": 16,
"finish": 22,
"gridSetup": {
"sizeX": 6,
"sizeY": 1,
"row": 0,
"col": 16
}
}
]
},
{
"name": "Tuesday",
"display": 1,
"employees": [
{
"employeeId": 1,
"name": "Bob",
"start": 10,
"finish": 18,
"gridSetup": {
"sizeX": 8,
"sizeY": 1,
"row": 0,
"col": 10
}
},
{
"employeeId": 2,
"name": "Paul",
"start": 16,
"finish": 22,
"gridSetup": {
"sizeX": 6,
"sizeY": 1,
"row": 0,
"col": 16
}
}
]
}
]
}
so this means that all weekdays are in the element "weekDays". And then you have in week only one week and don't need an array-indexer to access the hole thing.
We have a object arrays the below format in node.js and we want to this array in multidimensional arrays.
object arrays :
[ { id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 6,
attribute_label: 'level4',
attribute_order: 1,
attribute_name: 'level4_1'
{ id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 7,
attribute_label: 'level5',
attribute_order: 2,
attribute_name: 'level5_1'
{ id: 15,
process_id: 94,
process_type: 'Section',
process_type_order: 2,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null },
{ id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 8,
attribute_label: 'level6',
attribute_order: 1,
attribute_name: 'level6_1'
{ id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 9,
attribute_label: 'level7',
attribute_order: 2,
attribute_name: 'level7_1'
{ id: 6,
process_id: 94,
process_type: 'Section',
process_type_order: 4,
attribute_id: 10,
attribute_label: 'level8',
attribute_order: 1,
attribute_name: 'level8_1'
{ id: 14,
process_id: 94,
process_type: 'Section',
process_type_order: 5,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null } ]
and we want to this object array in below format (multidimensional arrays). please suggest that how can we convert it the below formate
[ [ { id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 6,
attribute_label: 'level4',
attribute_order: 1,
attribute_name: 'level4_1' },
{ id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 7,
attribute_label: 'level5',
attribute_order: 2,
attribute_name: 'level5_1' } ],
[ { id: 15,
process_id: 94,
process_type: 'Section',
process_type_order: 2,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null } ],
[ { id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 8,
attribute_label: 'level6',
attribute_order: 1,
attribute_name: 'level6_1' },
{ id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 9,
attribute_label: 'level7',
attribute_order: 2,
attribute_name: 'level7_1' } ],
[ { id: 6,
process_id: 94,
process_type: 'Section',
process_type_order: 4,
attribute_id: 10,
attribute_label: 'level8',
attribute_order: 1,
attribute_name: 'level8_1' } ],
[ { id: 14,
process_id: 94,
process_type: 'Section',
process_type_order: 5,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null } ],
]
Hope this helps createMultiArray creates your desired Array based on your objects id's:
var array = [ { id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 6,
attribute_label: 'level4',
attribute_order: 1,
attribute_name: 'level4_1'
},
{ id: 4,
process_id: 94,
process_type: 'Section',
process_type_order: 1,
attribute_id: 7,
attribute_label: 'level5',
attribute_order: 2,
attribute_name: 'level5_1'
},
{ id: 15,
process_id: 94,
process_type: 'Section',
process_type_order: 2,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null },
{ id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 8,
attribute_label: 'level6',
attribute_order: 1,
attribute_name: 'level6_1',
},
{ id: 5,
process_id: 94,
process_type: 'Section',
process_type_order: 3,
attribute_id: 9,
attribute_label: 'level7',
attribute_order: 2,
attribute_name: 'level7_1'
},
{ id: 6,
process_id: 94,
process_type: 'Section',
process_type_order: 4,
attribute_id: 10,
attribute_label: 'level8',
attribute_order: 1,
attribute_name: 'level8_1'
},
{ id: 14,
process_id: 94,
process_type: 'Section',
process_type_order: 5,
attribute_id: null,
attribute_label: null,
attribute_order: null,
attribute_name: null } ]
function createMultiArray(array){
var newArray = [];
array.forEach(function(obj,index){
var subarray;
var subArrayExists = false;
for(var sub=0; sub < newArray.length; sub++){
subarray = newArray[sub];
if(subarray.some(function(subobj){
return subobj.id == obj.id;
})){
subArrayExists = true;
break;
}
}
if(!subArrayExists){
newArray.push([obj]);
}
else{
subarray.push(obj);
}
});
return newArray;
}
createMultiArray(array);