Convert string parameter to an array of one element












20















I wrote a function which has to support two types of a paramter names for a list of values. Internally it deals with the parameter as an array.



A single name is given as string and multiples names are given as an array of strings.



// simplified example
let doSome = names => names.map(name => name.toUpperCase())

names(['Bart', 'Lisa'])
// [ 'BART', 'LISA' ]
names('Homer')
// TypeError: names.map is not a function


I found a solution using Array.of() in combination with flatten() which needs some babel configuration.



doSome = names => Array.of(names).flatten().map(name => name.toUpperCase());


Is there an idiomatic way in JavaScript to get an array without a type check?










share|improve this question

























  • I think you may use split() to convert a string in to array of one element

    – Manikanta Chinta
    Jan 4 at 13:03






  • 6





    Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

    – shiftweave
    Jan 4 at 17:11






  • 1





    @shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

    – Mike Hill
    Jan 4 at 21:16






  • 1





    Why can't you just (names instanceof Array ? names : [names]).map()?

    – Salman A
    Jan 4 at 22:06






  • 1





    @sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

    – shiftweave
    Jan 7 at 17:19


















20















I wrote a function which has to support two types of a paramter names for a list of values. Internally it deals with the parameter as an array.



A single name is given as string and multiples names are given as an array of strings.



// simplified example
let doSome = names => names.map(name => name.toUpperCase())

names(['Bart', 'Lisa'])
// [ 'BART', 'LISA' ]
names('Homer')
// TypeError: names.map is not a function


I found a solution using Array.of() in combination with flatten() which needs some babel configuration.



doSome = names => Array.of(names).flatten().map(name => name.toUpperCase());


Is there an idiomatic way in JavaScript to get an array without a type check?










share|improve this question

























  • I think you may use split() to convert a string in to array of one element

    – Manikanta Chinta
    Jan 4 at 13:03






  • 6





    Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

    – shiftweave
    Jan 4 at 17:11






  • 1





    @shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

    – Mike Hill
    Jan 4 at 21:16






  • 1





    Why can't you just (names instanceof Array ? names : [names]).map()?

    – Salman A
    Jan 4 at 22:06






  • 1





    @sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

    – shiftweave
    Jan 7 at 17:19
















20












20








20


1






I wrote a function which has to support two types of a paramter names for a list of values. Internally it deals with the parameter as an array.



A single name is given as string and multiples names are given as an array of strings.



// simplified example
let doSome = names => names.map(name => name.toUpperCase())

names(['Bart', 'Lisa'])
// [ 'BART', 'LISA' ]
names('Homer')
// TypeError: names.map is not a function


I found a solution using Array.of() in combination with flatten() which needs some babel configuration.



doSome = names => Array.of(names).flatten().map(name => name.toUpperCase());


Is there an idiomatic way in JavaScript to get an array without a type check?










share|improve this question
















I wrote a function which has to support two types of a paramter names for a list of values. Internally it deals with the parameter as an array.



A single name is given as string and multiples names are given as an array of strings.



// simplified example
let doSome = names => names.map(name => name.toUpperCase())

names(['Bart', 'Lisa'])
// [ 'BART', 'LISA' ]
names('Homer')
// TypeError: names.map is not a function


I found a solution using Array.of() in combination with flatten() which needs some babel configuration.



doSome = names => Array.of(names).flatten().map(name => name.toUpperCase());


Is there an idiomatic way in JavaScript to get an array without a type check?







javascript arrays string ecmascript-6






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 5 at 6:23









4dc0

39539




39539










asked Jan 4 at 12:39









sschmecksschmeck

3,1811938




3,1811938













  • I think you may use split() to convert a string in to array of one element

    – Manikanta Chinta
    Jan 4 at 13:03






  • 6





    Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

    – shiftweave
    Jan 4 at 17:11






  • 1





    @shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

    – Mike Hill
    Jan 4 at 21:16






  • 1





    Why can't you just (names instanceof Array ? names : [names]).map()?

    – Salman A
    Jan 4 at 22:06






  • 1





    @sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

    – shiftweave
    Jan 7 at 17:19





















  • I think you may use split() to convert a string in to array of one element

    – Manikanta Chinta
    Jan 4 at 13:03






  • 6





    Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

    – shiftweave
    Jan 4 at 17:11






  • 1





    @shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

    – Mike Hill
    Jan 4 at 21:16






  • 1





    Why can't you just (names instanceof Array ? names : [names]).map()?

    – Salman A
    Jan 4 at 22:06






  • 1





    @sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

    – shiftweave
    Jan 7 at 17:19



















I think you may use split() to convert a string in to array of one element

– Manikanta Chinta
Jan 4 at 13:03





I think you may use split() to convert a string in to array of one element

– Manikanta Chinta
Jan 4 at 13:03




6




6





Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

– shiftweave
Jan 4 at 17:11





Why don't you want to use a type-check? That would typically be the idiomatic and maintainable way to do this.

– shiftweave
Jan 4 at 17:11




1




1





@shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

– Mike Hill
Jan 4 at 21:16





@shiftweave +1. As the current responses show, the ways around this simply hide the type-check underneath another call and shift into the code-monkeying realm (or make it so that the method must be called with a variable number of parameters). The type check is the most idiomatic solution.

– Mike Hill
Jan 4 at 21:16




1




1





Why can't you just (names instanceof Array ? names : [names]).map()?

– Salman A
Jan 4 at 22:06





Why can't you just (names instanceof Array ? names : [names]).map()?

– Salman A
Jan 4 at 22:06




1




1





@sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

– shiftweave
Jan 7 at 17:19







@sschmeck Yes, in Javascript (and typescript) the idiomatic way to do this would be to check typeof names === 'object' && names instanceof Array. Typeof returns a set of string values corresponding to the basic JS types, and "instanceof" checks some prototypical inheritance stuff. These answers are neat one-liners for golfing, but it's more maintainable to just explicitly type-check rather than to get clever.

– shiftweave
Jan 7 at 17:19














4 Answers
4






active

oldest

votes


















26














You can use Array.concat(), since concat accepts both arrays and non arrays:






const names = (v) => .concat(v).map(name => name.toUpperCase())

console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
console.log(names('Homer')) // ['HOMER']








share|improve this answer



















  • 2





    The type check is now hidden away in Array.prototype.concat()...

    – Eric Duminil
    Jan 4 at 19:12



















2














You might not be able to implement it this way if you already have code depending on this function. Still, it would probably be cleaner to allow your function to accept a variable number of arguments with rest parameters.



It means you can call the function as names('Homer') or names('Bart', 'Lisa'):






function names(...args){
return args.map(name => name.toUpperCase());
}

console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
console.log(names('Homer')); // ['HOMER']





If you really want to call the function with an array as argument, you can use the spread syntax :



console.log(names(...['Bart', 'Lisa'])); // [ "BART", "LISA" ]


If you use it with a string, you'll get back an array of characters, though:



console.log(names(...'Homer')); // [ "H", "O", "M", "E", "R" ]





share|improve this answer































    2














    Why not just check if the input is an array or not using isArray()?



    I made another solution using this approach, also I put a control inside the map() so this don't fail when the name argument is null or undefined.






    const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

    console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
    console.log(JSON.stringify( names('Homer') ));
    console.log(JSON.stringify( names('') ));
    console.log(JSON.stringify( names(null) ));
    console.log(JSON.stringify( names([null]) ));
    console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));








    share|improve this answer































      0














      Maybe an maybe upcomming method of Array#flat would help in this case (works actually only in Chrome and FF).






      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa']));
      console.log(names('Homer'));








      share|improve this answer
























      • This answer is identical to the solution OP wants to improve, but using a different polyfill.

        – shiftweave
        Jan 4 at 16:35








      • 1





        @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

        – Konrad Rudolph
        Jan 4 at 19:13











      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54039152%2fconvert-string-parameter-to-an-array-of-one-element%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      4 Answers
      4






      active

      oldest

      votes








      4 Answers
      4






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      26














      You can use Array.concat(), since concat accepts both arrays and non arrays:






      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']








      share|improve this answer



















      • 2





        The type check is now hidden away in Array.prototype.concat()...

        – Eric Duminil
        Jan 4 at 19:12
















      26














      You can use Array.concat(), since concat accepts both arrays and non arrays:






      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']








      share|improve this answer



















      • 2





        The type check is now hidden away in Array.prototype.concat()...

        – Eric Duminil
        Jan 4 at 19:12














      26












      26








      26







      You can use Array.concat(), since concat accepts both arrays and non arrays:






      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']








      share|improve this answer













      You can use Array.concat(), since concat accepts both arrays and non arrays:






      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']








      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']





      const names = (v) => .concat(v).map(name => name.toUpperCase())

      console.log(names(['Bart', 'Lisa'])) // [ 'BART', 'LISA' ]
      console.log(names('Homer')) // ['HOMER']






      share|improve this answer












      share|improve this answer



      share|improve this answer










      answered Jan 4 at 12:41









      Ori DroriOri Drori

      75.5k138092




      75.5k138092








      • 2





        The type check is now hidden away in Array.prototype.concat()...

        – Eric Duminil
        Jan 4 at 19:12














      • 2





        The type check is now hidden away in Array.prototype.concat()...

        – Eric Duminil
        Jan 4 at 19:12








      2




      2





      The type check is now hidden away in Array.prototype.concat()...

      – Eric Duminil
      Jan 4 at 19:12





      The type check is now hidden away in Array.prototype.concat()...

      – Eric Duminil
      Jan 4 at 19:12













      2














      You might not be able to implement it this way if you already have code depending on this function. Still, it would probably be cleaner to allow your function to accept a variable number of arguments with rest parameters.



      It means you can call the function as names('Homer') or names('Bart', 'Lisa'):






      function names(...args){
      return args.map(name => name.toUpperCase());
      }

      console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
      console.log(names('Homer')); // ['HOMER']





      If you really want to call the function with an array as argument, you can use the spread syntax :



      console.log(names(...['Bart', 'Lisa'])); // [ "BART", "LISA" ]


      If you use it with a string, you'll get back an array of characters, though:



      console.log(names(...'Homer')); // [ "H", "O", "M", "E", "R" ]





      share|improve this answer




























        2














        You might not be able to implement it this way if you already have code depending on this function. Still, it would probably be cleaner to allow your function to accept a variable number of arguments with rest parameters.



        It means you can call the function as names('Homer') or names('Bart', 'Lisa'):






        function names(...args){
        return args.map(name => name.toUpperCase());
        }

        console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
        console.log(names('Homer')); // ['HOMER']





        If you really want to call the function with an array as argument, you can use the spread syntax :



        console.log(names(...['Bart', 'Lisa'])); // [ "BART", "LISA" ]


        If you use it with a string, you'll get back an array of characters, though:



        console.log(names(...'Homer')); // [ "H", "O", "M", "E", "R" ]





        share|improve this answer


























          2












          2








          2







          You might not be able to implement it this way if you already have code depending on this function. Still, it would probably be cleaner to allow your function to accept a variable number of arguments with rest parameters.



          It means you can call the function as names('Homer') or names('Bart', 'Lisa'):






          function names(...args){
          return args.map(name => name.toUpperCase());
          }

          console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
          console.log(names('Homer')); // ['HOMER']





          If you really want to call the function with an array as argument, you can use the spread syntax :



          console.log(names(...['Bart', 'Lisa'])); // [ "BART", "LISA" ]


          If you use it with a string, you'll get back an array of characters, though:



          console.log(names(...'Homer')); // [ "H", "O", "M", "E", "R" ]





          share|improve this answer













          You might not be able to implement it this way if you already have code depending on this function. Still, it would probably be cleaner to allow your function to accept a variable number of arguments with rest parameters.



          It means you can call the function as names('Homer') or names('Bart', 'Lisa'):






          function names(...args){
          return args.map(name => name.toUpperCase());
          }

          console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
          console.log(names('Homer')); // ['HOMER']





          If you really want to call the function with an array as argument, you can use the spread syntax :



          console.log(names(...['Bart', 'Lisa'])); // [ "BART", "LISA" ]


          If you use it with a string, you'll get back an array of characters, though:



          console.log(names(...'Homer')); // [ "H", "O", "M", "E", "R" ]





          function names(...args){
          return args.map(name => name.toUpperCase());
          }

          console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
          console.log(names('Homer')); // ['HOMER']





          function names(...args){
          return args.map(name => name.toUpperCase());
          }

          console.log(names('Bart', 'Lisa')); // [ 'BART', 'LISA' ]
          console.log(names('Homer')); // ['HOMER']






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 4 at 19:22









          Eric DuminilEric Duminil

          39.5k53068




          39.5k53068























              2














              Why not just check if the input is an array or not using isArray()?



              I made another solution using this approach, also I put a control inside the map() so this don't fail when the name argument is null or undefined.






              const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

              console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
              console.log(JSON.stringify( names('Homer') ));
              console.log(JSON.stringify( names('') ));
              console.log(JSON.stringify( names(null) ));
              console.log(JSON.stringify( names([null]) ));
              console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));








              share|improve this answer




























                2














                Why not just check if the input is an array or not using isArray()?



                I made another solution using this approach, also I put a control inside the map() so this don't fail when the name argument is null or undefined.






                const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

                console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
                console.log(JSON.stringify( names('Homer') ));
                console.log(JSON.stringify( names('') ));
                console.log(JSON.stringify( names(null) ));
                console.log(JSON.stringify( names([null]) ));
                console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));








                share|improve this answer


























                  2












                  2








                  2







                  Why not just check if the input is an array or not using isArray()?



                  I made another solution using this approach, also I put a control inside the map() so this don't fail when the name argument is null or undefined.






                  const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

                  console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
                  console.log(JSON.stringify( names('Homer') ));
                  console.log(JSON.stringify( names('') ));
                  console.log(JSON.stringify( names(null) ));
                  console.log(JSON.stringify( names([null]) ));
                  console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));








                  share|improve this answer













                  Why not just check if the input is an array or not using isArray()?



                  I made another solution using this approach, also I put a control inside the map() so this don't fail when the name argument is null or undefined.






                  const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

                  console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
                  console.log(JSON.stringify( names('Homer') ));
                  console.log(JSON.stringify( names('') ));
                  console.log(JSON.stringify( names(null) ));
                  console.log(JSON.stringify( names([null]) ));
                  console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));








                  const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

                  console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
                  console.log(JSON.stringify( names('Homer') ));
                  console.log(JSON.stringify( names('') ));
                  console.log(JSON.stringify( names(null) ));
                  console.log(JSON.stringify( names([null]) ));
                  console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));





                  const names = x => (Array.isArray(x) ? x : [x]).map(name => name && name.toUpperCase());

                  console.log(JSON.stringify( names(['Bart', 'Lisa']) ));
                  console.log(JSON.stringify( names('Homer') ));
                  console.log(JSON.stringify( names('') ));
                  console.log(JSON.stringify( names(null) ));
                  console.log(JSON.stringify( names([null]) ));
                  console.log(JSON.stringify( names([undefined, "Roger", "Bob", null]) ));






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 8 at 3:50









                  ShiderszShidersz

                  4,8842629




                  4,8842629























                      0














                      Maybe an maybe upcomming method of Array#flat would help in this case (works actually only in Chrome and FF).






                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));








                      share|improve this answer
























                      • This answer is identical to the solution OP wants to improve, but using a different polyfill.

                        – shiftweave
                        Jan 4 at 16:35








                      • 1





                        @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                        – Konrad Rudolph
                        Jan 4 at 19:13
















                      0














                      Maybe an maybe upcomming method of Array#flat would help in this case (works actually only in Chrome and FF).






                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));








                      share|improve this answer
























                      • This answer is identical to the solution OP wants to improve, but using a different polyfill.

                        – shiftweave
                        Jan 4 at 16:35








                      • 1





                        @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                        – Konrad Rudolph
                        Jan 4 at 19:13














                      0












                      0








                      0







                      Maybe an maybe upcomming method of Array#flat would help in this case (works actually only in Chrome and FF).






                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));








                      share|improve this answer













                      Maybe an maybe upcomming method of Array#flat would help in this case (works actually only in Chrome and FF).






                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));








                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));





                      const names = unknown => [unknown].flat().map(name => name.toUpperCase())

                      console.log(names(['Bart', 'Lisa']));
                      console.log(names('Homer'));






                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Jan 4 at 12:56









                      Nina ScholzNina Scholz

                      179k1491159




                      179k1491159













                      • This answer is identical to the solution OP wants to improve, but using a different polyfill.

                        – shiftweave
                        Jan 4 at 16:35








                      • 1





                        @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                        – Konrad Rudolph
                        Jan 4 at 19:13



















                      • This answer is identical to the solution OP wants to improve, but using a different polyfill.

                        – shiftweave
                        Jan 4 at 16:35








                      • 1





                        @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                        – Konrad Rudolph
                        Jan 4 at 19:13

















                      This answer is identical to the solution OP wants to improve, but using a different polyfill.

                      – shiftweave
                      Jan 4 at 16:35







                      This answer is identical to the solution OP wants to improve, but using a different polyfill.

                      – shiftweave
                      Jan 4 at 16:35






                      1




                      1





                      @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                      – Konrad Rudolph
                      Jan 4 at 19:13





                      @shiftweave I see at least two differences: (1) it already works natively in some implementations; (2) it arguably improves the syntax of OP’s code by sugaring Array.of.

                      – Konrad Rudolph
                      Jan 4 at 19:13


















                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54039152%2fconvert-string-parameter-to-an-array-of-one-element%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      MongoDB - Not Authorized To Execute Command

                      How to fix TextFormField cause rebuild widget in Flutter

                      Npm cannot find a required file even through it is in the searched directory