简体   繁体   中英

Push an item to array of array in javascript

Hi I am having an array like below and trying to push the item on map, but i am not able to push, Please tell what wrong i am doing here.

firstClassPrices: [
  [
    "Kan ej ombokas",
    "431",
    "SEK",
    "Företagspris"
  ],
  [
    "Kan ombokas",
    "525",
    "SEK",
    "Företagspris"
  ]
]

trying to push '1' like below:

 let ticketi = firstClassPrices.map((price) => {
      price.push("1");
    });

i need o/p as

firstClassPrices: [
      [
        "Kan ej ombokas",
        "431",
        "SEK",
        "Företagspris",
         "1"
      ],
      [
        "Kan ombokas",
        "525",
        "SEK",
        "Företagspris",
         "1"
      ]
    ]

You have to return the price

 const firstClassPrices = [ [ "Kan ej ombokas", "431", "SEK", "Företagspris" ], [ "Kan ombokas", "525", "SEK", "Företagspris" ] ]; let ticketi = firstClassPrices.map((price) => { // skip if price already includes 1 if (!price.includes("1")) { price.push("1"); } return price; }); console.log(ticketi);

Your approach mutates the old array and maps undefined .


Instead, you could map the old and new content of the array.

This approach does not mutate the old data.

let ticketi = firstClassPrices.map(price => [...price, '1']); 

You can use Array.prototype.map() combined with Array.prototype.concat()

Code:

 const firstClassPrices = [["Kan ej ombokas","431","SEK","Företagspris"],["Kan ombokas","525","SEK","Företagspris"]] const ticketi = firstClassPrices.map(p => p.concat('1')) console.log(ticketi)

Since you want to mutate the original arrays, you can use the function Array.prototype.forEach .

The problem you're facing is regarding the missing return value inside of the map's handler, so basically, the handler is returning undefined

 const array = [ [ "Kan ej ombokas", "431", "SEK", "Företagspris" ], [ "Kan ombokas", "525", "SEK", "Företagspris" ]], handler = (a) => a.push("1"); array.forEach(handler); console.log(array);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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