简体   繁体   中英

How can I sum numbers which are substrings in variables?

I was wondering how can you combine two variables (or more) that have the same string values, but different numbers.

For example, if you're combining a list of ingredients that are present in two different recipes. For a shopping list, like:

let ingredient1 = 1 + " apple";
let ingredient2 = 2 + " apple";
//combining ingredient1 and ingredient 2 would produce something like totalIngredients = 3 apples;

I can kind of figure out the pluralization, but I can't figure out how I can combine those two strings and for it to only increase the number if they're matching.

Make a json if I were you or an obj, something like this

const r = {
    {
        Item: “Apple”,
        Amount: 1 
    },
    {
        Item: “Apple”,
        Amount: 1 
    }
}

Then fetch the amount and put them together, along with ingredients matching

You can't combine both ingredients and it should make a calculation because let ingredient1 = 1 + " apple"; produces a string 1 apple

You can do something like this:

let ingredient = 'apple'
let ingredient1 = 1
let ingredient2 = 2
let totalIngredients = ingredient1 + ingredient2 + ingredient

Or maybe use a for loop to loop through all ingredients and add it to the total and then add 'apple'

Like others have noted, you should store your ingredients as objects. One way to achieve this is to have a class which stores the count and ingredient type. You can then define a function that checks for a given type and returns the count of ingredients.

 class Ingredient { constructor(count, type) { this.count = count; this.type = type; } }; const countByType = (type) => ingredients.reduce((sum, ingredient) => { if (ingredient.type === type) { return sum += ingredient.count; } return sum; }, 0); const ingredients = []; ingredients.push(new Ingredient(1, "apple")); ingredients.push(new Ingredient(2, "apple")); ingredients.push(new Ingredient(5, "orange")); console.log(`${countByType("apple")} apples`); console.log(`${countByType("orange")} oranges`);

How can I sum numbers which are substrings in variables?

By converting the substrings to numbers. If the numbers are at the start of the string you can just use parseInt .

parseInt(ingredient1) + parseInt(ingredient2)

To check the types, you could use for example

 let ingredient1 = 1 + " apple"; let ingredient2 = 2 + " apple"; let type1 = ingredient1.slice(ingredient1.indexOf(' ') + 1); let type2 = ingredient2.slice(ingredient2.indexOf(' ') + 1); if (type1 === type2) { console.log(`${parseInt(ingredient1) + parseInt(ingredient2)} ${type1}`); }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM