how to use an object as a key in the groupBy function with underscore.js

My JSON structure is as follows:

I am attempting to group by NodeGroup using the underscore library.

vm.populatedNodeGroups = _($scope.nodes).groupBy(function (o) { 
                return o.NodeGroup.Name;
            });

Within vm.populatedNodeGroups, I receive two keys ("Are One Routers" and "Are Two Switches") with two arrays each.

What I want to achieve is two Node Group Objects with two arrays each.

Any suggestions on how to accomplish this?

Answer №1

Here is an example of a solution

You are on the right track. This is how our view would look like, utilizing the underscore groupBy function:

<div ng-controller="TheCtrl">

  <div ng-repeat="(key, values) in populatedNodeGroups">
    <h3>{{key}}</h3>
    <ul>
       <li ng-repeat="value in values">{{value | json}}</li>
    </ul>
  </div>
</div>

And here is the controller code, using the groupBy method:

app.controller('TheCtrl', ['$scope', function ($scope) {       

      var result = _(data)
      .groupBy(function (o) { 
        return o.NodeGroup.Name;
      })
      ;

    $scope.populatedNodeGroups = result;

}])

The output would be:

Area Two Switches

  • { "NodeGroup": { "Name": "Area Two Switches" ... } ... }
  • { "NodeGroup": { "Name": "Area Two Switches" ... } ... }

Areaa One Routers

  • { "NodeGroup": { "Name": "Areaa One Routers" ... } ... }
  • { "NodeGroup": { "Name": "Areaa One Routers" ... } ... }

See it in action here

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What is the best way to connect a nested Vuex object to a Vue.js property within the Tiptap text editor?

I'm attempting to connect the nested Vuex state object to the editor property of the tiptap's editor-content component. The structure of the state is as follows: <template> <table :style="{ backgroundColor: element.options.ba ...

Build a row within an HTML table that is devoid of both an ID and a class

Creating an additional row in an HTML table is a common task, but it can become tricky when dealing with multiple forms and tables on one page. In my case, I have a form that contains only a table element, and I want to move some columns from the first row ...

Trouble Loading HTML Template Post Email Dispatch in Django

In my Django project, I have set up functionality to send an email after a form submission using the smtplib module. The email is sent successfully, but for some reason, I'm encountering an issue where the corresponding HTML template (delivery_email_s ...

The getStaticProps() function in next.js isn't retrieving items as expected

I've been facing issues while trying to load items onto my next.js page: import {getadminInfo} from '../../dataFetch/adminInfo' import {addItem} from '../../dataFetch/catalog' import {useState} from "react" import { getLi ...

Retrieving an array from a nested JSON structure using $http.get in combination with mongoose and Node.js

In my possession is a JSON representation of an apartment listing: { "_id": { "$oid": "5673d1dcf93fe452d80c2c2c" }, "street": "myStreet", "buildingNumber": 1, "apartmentNumber": 1, "UsersAndQuestions": [ { ...

jQuery performs perfectly in Chrome but encounters issues in IE9/IE8 and other older versions of Internet

I've implemented this lengthy jQuery script to enable dynamic dropdown loading and updating when selections are changed. However, I'm facing issues in Internet Explorer where the script loads the dropdowns initially but doesn't trigger oncha ...

Customizing order and limit features in AngularJS

I have a collection of items that I need to organize into separate lists based on priority levels. items = [ {'type': 2, 'priority': 1, 'name': 'one'}, {'type': 1, 'priority': 2, 'na ...

Efficiently organizing dates in the Vuetify date range picker

I am working with a vuetify date range picker component and have the following code: <v-menu ref="effectiveDateMenu" v-model="effectiveDateMenu" :close-on-content-cl ...

Having trouble with Vue.js implementation of Bootstrap tab navigation?

I am currently working on a vue.js application that consists of 2 routed components. I recently attempted to integrate a bootstrap tab navigation into the first component, but unfortunately, the tab contents are not being properly displayed. <templat ...

Renew the Look of Dynamic HTML with Updated Styles

In the middle of my website, there is a console that contains links to dynamically update its content using javascript. Everything works smoothly, but the new HTML added dynamically does not have any styling applied to it. Is there a way to refresh the CS ...

The redirection to the HTML page happens too soon, causing the ASYNC functions to fail in saving the user's image and data to the server

Hey everyone! I'm facing an issue with async/await functions. Here's the code snippet from my backend where I'm trying to save details of a newly registered user. I'm puzzled as to why the Redirect() function is executing before the f ...

The children of the KendoUI treeview are showing up as null

Within my KendoUI treeview setup, the main nodes trigger a call to an MVC controller that checks for a nullable ID parameter before utilizing a different model. When accessing the URL: http://localhost:2949/Report/GetReportGroupAssignments The resulting ...

Sending an AJAX request to a PHP file to retrieve data in JSON format

Greetings everyone, I am currently exploring the world of AJAX for sending information to a JSON file and I'm unsure about the structure of the .php file needed to process it. My experience with .php is quite limited. Can anyone guide me in the right ...

What is the process for exporting data from MongoDB?

Recently, I created a web application for fun using Handlebars, Express, and Mongoose/MongoDB. This app allows users to sign up, post advertisements for others to view and respond to. All the ads are displayed on the index page, making it a shared experie ...

Creating a dynamic multi-series line chart in D3 version 4 that incorporates data points with matching colors to their respective lines

In my attempt to enhance a multi-series line chart with D3 V4 in Angular-cli, I have encountered a challenge. Below is the code snippet of what I have been working on. var lookBookData = z.domain().map(function (name) { return { name: name, ...

What is the best method to utilize a promise to delay the execution of a function until the data is received and stored

Currently, I am facing an issue with my API where the model variable is returning undefined before any data is populated in the return_array. I am unsure of how to implement promises or another method to ensure that the variable waits for data to be fille ...

What steps can be taken to ensure the random generator continues to function multiple times?

My little generator can choose a random item from an array and show it as text in a div. However, it seems to only work once. I'm looking for a way to make it refresh the text every time you click on it. var items = Array(523,3452,334,31,5346); var r ...

Switching images with jQuery on a click event

Can anyone provide suggestions on how to swap images with the header image when icons in the footer are clicked? Here is a demonstration on Jsfiddle <ul> <li> <a href="#"> <img src="img/q.jpg&quo ...

Modify the href value by matching it with the parent div attribute

I am working on an HTML project <div class="1" style="" title="NeedthisText TextIDontneed"> <div class="2> <div class="3"> <a target="_blank" href="/NeedToChange/DispForm.aspx?ID=1"></a> </div> </div> &l ...

Updating the light and OrbitControls in three.js

I am currently utilizing threejs to showcase an object and using OrbitControls to manage the movement of the scene with my mouse. Additionally, my scene features a DirectionalLight. Initially, when the scene is rendered, the DirectionalLight illuminates m ...