Navigating through the value of an object

const schoolObj = {
  class10: { studentName: John, result: pass },
  class11: { studentName: Alis, result: pass },
  class12: { studentName: Nick, result: fail },
};

Is there a way to generate a list of student names when the result is marked as pass? The classes - class10, class11, and class12 are all dynamic values. I'm facing an issue on how to access these dynamically changing values during iteration.

The desired output should be an array like student = [John, Alis]

Answer №1

Retrieve only the names of students who have passed by filtering out those who have not. Then convert these student objects into an array containing their names.

const schoolArr = {
  class10: { studentName: 'John', result: 'pass' },
  class11: { studentName: 'Alis', result: 'pass' },
  class12: { studentName: 'Nick', result: 'fail' }
};

console.log(
  Object.values(schoolArr)
    .filter(({ result }) => result === 'pass')
    .map(({ studentName }) => studentName)
)

Answer №2

Let me present an alternative solution for your consideration.

const schoolData = {
  grade7: { studentName: 'Sarah', result: 'pass' },
  grade8: { studentName: 'Mike', result: 'fail' },
  grade9: { studentName: 'Lena', result: 'pass' }
};

const passingStudents = Object.values(schoolData).reduce((accumulator, { studentName, result }) => {
  if (result === 'pass') {
    accumulator.push(studentName);
  }
  return accumulator;
}, []);

console.log(passingStudents);

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

Modify the value of a CSS property through JavaScript

Hey there, I'm wondering how to change a CSS value of the document itself, rather than targeting a specific element. I've already looked into solutions like Change :hover CSS properties with JavaScript, but they all involve adding CSS rules. I a ...

submit a unidirectional post using jquery.post

I am working with a variable named test_string which is set to the value "hello." var test_string = "hello"; I want to send this variable to a PHP page in a one-way communication. I have attempted the following: $.post('php_page.php', test_str ...

jQuery load fails to fill select dropdown

Upon page load, my code executes a call to mysql to populate a select element with data. This process works smoothly on the initial load or when the page is refreshed. However, I am encountering an issue when attempting to update or repopulate the select e ...

An effective method for converting MongoDB's JSON array of UTC dates to local time using Node.js

Using Node.js to query MongoDB and encountering an issue with Date (ISODate) fields. After querying, the Date format returned is as follows: DT : 2014-10-02T02:36:23.354Z The goal is to efficiently convert the DT field from UTC to Local Time ISOString. F ...

What is the best way to store a personalized configuration for a user within a Node module?

For my CLI project in Node.js utilizing commander.js, I am interested in implementing a way to store user-specific configuration settings. This will allow users to input their preferences only once during the initial usage. What would be the best approac ...

Is it possible to make changes to dynamically inserted HTML using jQuery.ajax?

I'm facing a scenario in jQuery where I make an ajax call that inserts HTML into my website. However, I also need to perform operations on this inserted HTML within the same ajax call's success callback function. Here is a simplified version of ...

In Angular 7, you can create a checklist from an array of objects by incorporating multiple selection and a "select all" feature. Here's how to

I need assistance with creating a list in Angular using ngFor. Each item must have a unique ID and a checkbox, as depicted in the diagram. However, I am struggling to determine how to manage multiple selections, implement a select all feature, and trigge ...

The functionality of ServerTags is not available when using OnClientClick

<asp:button runat="server" Text="Save as" OnClick="btnSave_click" OnClientClick="if(!Check('<% # tb.ClientID %>')) return false; return Object();" CausesValidation="false"></asp:button> <asp:TextBox runat="server" ID="tb"& ...

onmouseleave event stops triggering after blur event

I am facing an issue with a mouseleave event. Initially, when the page loads, the mouseleave event functions correctly. However, after clicking on the searchBar (click event), and then clicking outside of it (blur event), the mouseleave functionality stops ...

Differences in behavior of Backbone.js Ajax calls between Chrome and Firefox

I am encountering an unusual problem in Firefox. When we load a page and call Routers.initializeRouters(); an ajax request is sent to fetch the data, and the loadFormSuccessHandler function populates the response into the views. In Chrome, the Ajax reques ...

The automation script for Playwright/Puppeteer is having trouble properly handling `async...await` in a `for..loop` on the `/signup` page

Currently, I am faced with the challenge of automating rate-limit requests using a playwright automation script. The issue arises when the script keeps attempting to sign up with the email <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data ...

Executing code asynchronously and handling callbacks using Process.nextTick and Promise

When I execute the following code: process.nextTick(() => console.log(8)) Promise.resolve("hi").then(t => console.log(t)) console.log(7); The output displayed is 7 8 hi This behavior is as expected because process.n ...

Vue.js does not show the span element when errors are present

There is an error array in the data that gets populated when a user focuses out of an input field. If the input is empty, it adds an object to the error array with specific messages for 'product_name' and 'barcode'. The structure looks ...

Troubleshooting issue: Click function not responding inside Bootstrap modal

Below is the JavaScript code for my click function $(".addPizza").on("click", function(event) { event.preventDefault(); console.log("hello") let userId = $("#userId").attr("data-id"); let pizzaRecipe = $('#pizza-recipe').val().trim(); ...

Having trouble sending information to MailChimp

I am currently facing an issue with connecting my node.js application to my Mailchimp account. Despite submitting the data, it does not appear in my Mailchimp account. const express = require("express"); const bodyParser = require("body-pa ...

Ways to prevent websites from switching to landscape mode

Is there a way to prevent landscape mode on my website and restrict users to portrait mode, especially for devices with screen widths below 777px? I have custom headers that take up fixed position space of around 100px on the screen. If it is possible to ...

NestJs Custom Validation Pipe: Exploring the Possibilities with Additional Options

I have created a unique custom validation pipe and I am looking to enhance it with additional custom logic. How can I extend the pipe to allow for the options listed below? After reviewing the Github link provided, I have implemented my own version of the ...

How to Filter HTML Links with Javascript?

I need help implementing a basic JavaScript filter on an HTML page for a project at work. The filter should allow users to enter a keyword in an input field and then display only hyperlinks whose names match the keyword. I came across a jquery example, bu ...

Switching Visibility of Map Layers through an External Component

Let me start by mentioning that I am a design student utilizing Vue.js for prototyping my senior project. This is merely a prototype of a diary app and not an actual working project. The issue at hand involves a map component created with Vue2Leaflet, whi ...

"React router location change fails to trigger a refresh in the application

I am encountering a situation with my code within a Navbar component: renderAccountButton = user => { const path = this.props.location.pathname; const regex = new RegExp(/^\/register/); if (user.isAuthenticated) { return ( <Butt ...