If the item is discovered, return it; otherwise, assign it as undefined

Here is the code snippet I am currently using:

var snap = this.snaps.find((snap) => {
    if(pos > snap.min && snap.max > pos){
        return snap;
    }
})
if(snap !== undefined){
    this.scrollTo = snap.down ? snap.max : snap.min;
}else{
    this.scrollTo = undefined
}

My goal is to achieve the same functionality without using an if-else statement. I attempted the following code:

this.scrollTo = this.snaps.find((snap) => {
    if(pos > snap.min && snap.max > pos){
        return snap.down ? snap.max : snap.min;;
    }
})

Unfortunately, this alternative approach did not work as expected.

Answer №1

When using this.snaps.find as Array.prototype.find, the boolean value of the return from the function is what matters most. The return snap; statement in that function essentially has the same effect as return true;. In this scenario, it's more efficient to just return the boolean value of the condition instead of resorting to an if statement. An arrow function without curly braces can be used to directly return the result of an expression without explicitly stating return, which allows you to simplify your find call like so:

var snap = this.snaps.find( snap => pos > snap.min && snap.max > pos );

To eliminate the need for additional if/else statements, you can utilize a logical operator like &&. The && operator returns its first operand if falsy (such as undefined), otherwise returning the second operand:

this.scrollTo = snap && (snap.down ? snap.max : snap.min);

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 specific flag should be included in Chrome settings to prevent displaying c:/fakepath?

Is there a way to disable this security feature? I'm seeking a solution in Chrome to obtain the full file path of an uploaded or viewed file, similar to how it can be done in Internet Explorer. Despite my efforts with flags like --allow-file-access-f ...

What is the best way to reset a dropdown list value in angular?

Is there a way to erase the selected value from an Angular dropdown list using either an x button or a clear button? Thank you. Code <div fxFlex fxLayout="row" formGroupName="people"> <mat-form-field appearance=&quo ...

Display a dynamic array within an Angular2 view

I have a dynamic array that I need to display in the view of a component whenever items are added or removed from it. The array is displayed using the ngOnInit() method in my App Component (ts): import { Component, OnInit } from '@angular/core' ...

Making requests using Axios in a web application created with Express, Node, and EJS

I'm currently working on a project that involves using Express.js, node.js, Axios, and ejs. The aim is to make REST calls to Oracle SQL REST services through Axios. However, I am facing challenges when it comes to dealing with Promises or Async/Await. ...

Program for sending and receiving messages

The concept behind this program is to enable users to send messages. The user navigates to the web interface, selects their ID as the sender and chooses a receiver ID before pressing submit. Upon submission, they are directed to a page displaying all the m ...

I'm having trouble understanding why this code is causing confusion for the user's selection during a specific part of the execution. I can't seem

In this memory game, event listeners respond to user input after a sequence of colored divs change color to appear illuminated. The expected behavior is that once the user clicks on the correct div in the right order, the sequence restarts with an additi ...

Adding elements to an array using JavaScript

What is the correct way to add new values to an array like this? json = {"awesome":"45.22","supercool":"9876"} I attempted json.push("amazingness":"45.22");, but unfortunately it was not successful. ...

Manipulating variables across various methods in TypeScript

I have a simple code snippet where two variables are defined in the Main method and I need to access them from another method. However, I am encountering an issue with 'variables are not defined', even though I specified them in the declerations ...

The jQuery focusout event is triggered on a form element, even if a child element is clicked within the form

How can I ensure that the focusout event is triggered only when the user is not focusing on the entire form element? Currently, if the user clicks on any of the form's inner elements such as the text field or the button, the event is still being trigg ...

Unable to sign out user from the server side using Next.js and Supabase

Is there a way to log out a user on the server side using Supabase as the authentication provider? I initially thought that simply calling this function would work: export const getServerSideProps: GetServerSideProps = withPageAuth({ redirectTo: &apos ...

`On mobile devices, the Bootstrap button no longer displays focus changes once clicked.`

When clicking a primary bootstrap button, it changes its background color to blue on mobile devices. https://i.sstatic.net/VNPDP.jpg For example, the first button appears normal and the second one turns blue after clicking. However, this background effec ...

Establishing the module exports for the NextJS configuration file

I have explored different solutions for adding multiple plugins to the next.js config file, with composition being the suggested method. However, I am encountering issues with this approach. const Dotenv = require('dotenv-webpack'); const withSt ...

What is the distinction between selecting and entering a date input value?

When a user selects a date, it needs to be immediately sent to the server. If they manually type in the date, it should be sent on blur. The issue arises when the oninput event is triggered for each keydown event, causing unnecessary server requests while ...

Can you explain the purpose of the `Sizzle.tokenize` function?

The mysterious function <code>Sizzle.tokenize lacks documentation and comments in the source code. What exactly is its purpose? Explore the code ...

Issues with Jquery Autocomplete feature when using an Input Box fetched through Ajax requests

When a user selects an option from the drop-down list, an input box is dynamically added to the page using AJAX. document.getElementById("input_box").innerHTML ="<input id='ProjectName'/>"; However, there seems to be an issue with jQuery ...

In search of a hover functionality similar to what can be found on Stack Overflow

I am really impressed by the hover effects on StackOverflow. I would love to incorporate a similar feature into my own web application. Can anyone provide me with more information? What is this feature called? Are there any libraries available for it? I h ...

Rotate Text in HTML <thead> Tag

I need assistance with rotating a table header. https://i.stack.imgur.com/hcvxx.png The HTML th elements within the thead section are described as follows: <th> <span class="rotate-all">Period</span> </th> <th> < ...

What sets 'babel-plugin-module-resolver' apart from 'tsconfig-paths'?

After coming across a SSR demo (React+typescript+Next.js) that utilizes two plugins, I found myself wondering why exactly it needs both of them. In my opinion, these two plugins seem to serve the same purpose. Can anyone provide insight as to why this is? ...

What could be causing the state of a child component to continuously reset?

I have a complex system of React components designed for fetching an embed from a music service API. This includes a higher-order component that interacts with the API to load the embed data. The issue I am facing is that my lowest-level child component is ...

What is the best approach for extracting functions from express routes for unit testing?

I have a JavaScript controller containing some exported routes. I am interested in accessing the functions used within these routes for unit testing purposes. While many blogs suggest creating actual HTTP requests to test express routes, I consider this t ...