Iterate through the values of an object and verify their presence in another object

I am working on a function where I need to check if any of the role names, passed in as a string with or without pipe separation, exist within an existing JavaScript array.

While .includes works well for single names, it doesn't work perfectly when dealing with multiple pipe separated names. In this case, my function fails to return true even if one of the names matches an element in the array.

is(roleName) {
    let roles = roleName.split('|')

    return roles.forEach(role => {
        return this.$page.auth.user.roles.includes(role) 
    })
}

Just so you know, this is a method used as a mixin for Vue.js.

Thank you!

Answer №1

To determine if all roles are present in the `users.roles` array, you can utilize Array.every.

checkRole(roleName) {
    let roles = roleName.split('|')

    return roles.every(role => {
        return this.$page.auth.user.roles.includes(role) 
    })
}

If you need to check if at least one of the roles exists in `users.roles`, you can use Array.some.

checkRole(roleName) {
    let roles = roleName.split('|')

    return roles.some(role => {
        return this.$page.auth.user.roles.includes(role) 
    })
}

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

Having difficulty kicking off a fresh React project on Windows

I've encountered an issue while setting up my React application on Windows OS. After running npm start, the application fails to load on localhost:3000, showing the error message Cannot GET /. Below is the project structure: - webpack.config.js - p ...

A guide on integrating functions into dynamically created buttons using the DOM

Is there a way to add functionality to the button labeled "CLICK ME TO EDIT"? I'm looking for some ideas on how to do this. var comment = prompt("Type content for new paragraph here", ""); var newParagraph = document.createElement('p'); new ...

Performing an Ajax POST request using jQuery

I am currently working on modifying my code to use POST instead of GET to send variables to a PHP page. The current code sends data via GET and receives it in JSON format. What changes should I make in order to pass the variables to process_parts.php usi ...

Adjust text at multiple positions using Javascript

I am working on parsing a complex query and developing a tool using the following sample: var str =" SELECT 'Capital Return' AS Portfolio_Classification , '(Gross)' AS Portfolio_Type , '0.21%& ...

Missing jQuery data attribute value detected

I have two custom data attributes within the <option> element, which hold the latitude (lat) and longitude (lng>) for mapping purposes:</p> <pre><code><option id="riderInfo" data-lat="" data-lng=""></option> </pre ...

Searching for results using the .find() method may yield elements that do not meet the specified search criteria

Utilizing the .find() method on my JSON object called records: [ { "_id": "61f9da9fcc6888f201f722cb", "firstName": "joe", "lastName": "jergen", "email": "<a hre ...

Lately, I've been coming across mentions of "myApp.controllers" and "myApp.modules" in Angular JS. Can anyone explain the significance of these terms?

Recently, I've come across code that looks like this: angular.module('app.controllers') This pattern has appeared in a few tutorials I've read. However, the purpose of the .controllers within the module name is unclear to me. I'v ...

The Datatable component does not display the data as expected when integrating it with Vue.js and fetching data from

Looking for a template on how to implement a Vue.js DataTable in an HTML page, fetching data from an API and including features like a search box and pagination. ...

"Communication breakdown in Vue.js: $emit event not being picked up by corresponding $

Vue.component('rating-edit', { template:` <form> <input v-model="rating.title" type="text"> <textarea v-model="rating.remark">{{rating.remark}}</textarea> <button type="button" @click=" ...

Is it possible to generate an array of objects, where each object includes an observable retrieved through forkJoin?

let food = { id: 1, isTasty: false } Imagine I have a custom function that takes the ID of a food item and returns an observable which resolves to a boolean indicating whether the food is tasty or not. I wish to loop through an array of food items an ...

Modification of a CSS element

The CSS I am working with looks like this: .cls .imageX { float:left; } .cls .imageY { float:right; } It is currently being used on a page in this way: <div class="cls"> <a href="" class="imageX"><img src="left.png"/></a> &l ...

Customize image position based on div width using jQuery and CSS

I am dealing with dynamic input sourced from a JSON feed that populates a div with different names of varying lengths. Within this setup, there is an image positioned absolutely, and I need to adjust the CSS left value of the image dynamically based on th ...

The width of the <ul> element does not properly accommodate the width of the <li> elements during the animation that updates the width of the <li>

I am currently working on implementing a typing animation in React. The li element has an animation that recursively changes its width from 0px to 100%. However, I have noticed that when the width of the li changes, the parent ul does not adjust its width ...

Using the Grails asset-pipeline with an external JavaScript library

In transitioning from Grails 2 to Grails 3, I am facing the challenge of managing my JavaScript files with the asset-pipeline plugin. The issue lies in using external libraries such as globalize and ajax-solr, which are large and consist of multiple interd ...

Steps to keep only one submenu open at a time and close others

Struggling to figure out how to open one submenu at a time, and I can't seem to locate the issue! I've searched around for solutions but haven't found anything that works for me. The submenu also needs to remain closed when the page loads. - ...

Vue.js navigation guards, restrict access to all unauthorized routes, grant entry to specific routes upon successful authentication

I'm currently working on implementing a navigation guard in Vue.js with a specific logic: I want to restrict access to all routes that require authentication and redirect users to the login page if they are not authenticated. The only exception is the ...

Implementing specific CSS styles for different routes in Angular 5: Use Bootstrap CSS exclusively for admin routes

I am looking to apply Bootstrap CSS only to routes starting with '/admin'. I have enabled lazy loading for both admin and public modules. ...

Can someone please provide me with a Javascript code snippet that accomplishes the same function

<script> document.addEventListener('DOMContentLoaded', function () { const menuItems = document.querySelectorAll('.headmenu li'); menuItems.forEach(function (menuItem) { menuItem.addEventL ...

Error: The server is unable to process the POST request to /api

Currently following a tutorial on YouTube: https://www.youtube.com/watch?v=4ECVE6TXKLQ&list=PLI-gk4ISRzCPlJjCz3yuAhL8vnmK6KWr7&index=11 After setting up a server listening on port 8080 and connecting to MongoDB Atlas successfully, the next step ...

Material UI - Array of Chips

I have been working on creating a ReactJS component that displays an array of chips with unique styling for each one. To achieve this, I created individual makeStyles classes for the chips. However, I encountered difficulties in dynamically changing the cl ...