Array destructuring with a ternary operator












1















I am trying to concat (with uniques values) two arrays and if the second array sometimes is a string.



Maybe it have a bug, but these are my three tryings:



let a = 'abcdefg'
// First try
[...new Set([..., ...(typeof(a) == 'string'? [a]: a))]
// Second try
[...new Set([..., [(typeof(a) == 'string'? ...[a]: ...a)]]
// Third try
[...new Set([..., (typeof(a) == 'string'? ...[a]: ...a)]









share|improve this question


















  • 1





    please add the wanted result as well - and some use cases with their result.

    – Nina Scholz
    Nov 26 '18 at 12:01








  • 1





    ... makes no sense at all.

    – Bergi
    Nov 26 '18 at 12:22
















1















I am trying to concat (with uniques values) two arrays and if the second array sometimes is a string.



Maybe it have a bug, but these are my three tryings:



let a = 'abcdefg'
// First try
[...new Set([..., ...(typeof(a) == 'string'? [a]: a))]
// Second try
[...new Set([..., [(typeof(a) == 'string'? ...[a]: ...a)]]
// Third try
[...new Set([..., (typeof(a) == 'string'? ...[a]: ...a)]









share|improve this question


















  • 1





    please add the wanted result as well - and some use cases with their result.

    – Nina Scholz
    Nov 26 '18 at 12:01








  • 1





    ... makes no sense at all.

    – Bergi
    Nov 26 '18 at 12:22














1












1








1








I am trying to concat (with uniques values) two arrays and if the second array sometimes is a string.



Maybe it have a bug, but these are my three tryings:



let a = 'abcdefg'
// First try
[...new Set([..., ...(typeof(a) == 'string'? [a]: a))]
// Second try
[...new Set([..., [(typeof(a) == 'string'? ...[a]: ...a)]]
// Third try
[...new Set([..., (typeof(a) == 'string'? ...[a]: ...a)]









share|improve this question














I am trying to concat (with uniques values) two arrays and if the second array sometimes is a string.



Maybe it have a bug, but these are my three tryings:



let a = 'abcdefg'
// First try
[...new Set([..., ...(typeof(a) == 'string'? [a]: a))]
// Second try
[...new Set([..., [(typeof(a) == 'string'? ...[a]: ...a)]]
// Third try
[...new Set([..., (typeof(a) == 'string'? ...[a]: ...a)]






javascript arrays ecmascript-6 destructuring






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 26 '18 at 12:00









tres.14159tres.14159

1701618




1701618








  • 1





    please add the wanted result as well - and some use cases with their result.

    – Nina Scholz
    Nov 26 '18 at 12:01








  • 1





    ... makes no sense at all.

    – Bergi
    Nov 26 '18 at 12:22














  • 1





    please add the wanted result as well - and some use cases with their result.

    – Nina Scholz
    Nov 26 '18 at 12:01








  • 1





    ... makes no sense at all.

    – Bergi
    Nov 26 '18 at 12:22








1




1





please add the wanted result as well - and some use cases with their result.

– Nina Scholz
Nov 26 '18 at 12:01







please add the wanted result as well - and some use cases with their result.

– Nina Scholz
Nov 26 '18 at 12:01






1




1





... makes no sense at all.

– Bergi
Nov 26 '18 at 12:22





... makes no sense at all.

– Bergi
Nov 26 '18 at 12:22












3 Answers
3






active

oldest

votes


















3














Instead of



[...new Set([..., ...(typeof a === 'string' ? [a] : a))]


take, watch the round, square, round and squere closing brackets at the end.



[...new Set([..., ...(typeof a === 'string' ? [a] : a)])]
// ^





let a = 'abcdefg'

console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);








share|improve this answer


























  • Thanks, my code had a bug. Sorry.

    – tres.14159
    Nov 26 '18 at 13:46



















2














Instead of using spread, you can use Array.concat(), because it treats combine arrays and values in the same way:






const a = 'abcdefg'
console.log([...new Set(.concat(, a))])
console.log([...new Set(.concat(, [a]))])








share|improve this answer































    0














    If I understand correctly, if the a parameter is a string, and not a collection, searching unique values and the need for a Set is moot. Then you could short circuit as typeof a === 'string' ? [a] : [...new Set(a)]






    let a = 'abcdefg'

    const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

    console.log(createArr(a));
    console.log(createArr([a,a,'aa']));








    share|improve this answer
























    • For the record, I like the solution by @OriDrori better ;)

      – Me.Name
      Nov 26 '18 at 13:21












    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%2f53480678%2farray-destructuring-with-a-ternary-operator%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    3 Answers
    3






    active

    oldest

    votes








    3 Answers
    3






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    Instead of



    [...new Set([..., ...(typeof a === 'string' ? [a] : a))]


    take, watch the round, square, round and squere closing brackets at the end.



    [...new Set([..., ...(typeof a === 'string' ? [a] : a)])]
    // ^





    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);








    share|improve this answer


























    • Thanks, my code had a bug. Sorry.

      – tres.14159
      Nov 26 '18 at 13:46
















    3














    Instead of



    [...new Set([..., ...(typeof a === 'string' ? [a] : a))]


    take, watch the round, square, round and squere closing brackets at the end.



    [...new Set([..., ...(typeof a === 'string' ? [a] : a)])]
    // ^





    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);








    share|improve this answer


























    • Thanks, my code had a bug. Sorry.

      – tres.14159
      Nov 26 '18 at 13:46














    3












    3








    3







    Instead of



    [...new Set([..., ...(typeof a === 'string' ? [a] : a))]


    take, watch the round, square, round and squere closing brackets at the end.



    [...new Set([..., ...(typeof a === 'string' ? [a] : a)])]
    // ^





    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);








    share|improve this answer















    Instead of



    [...new Set([..., ...(typeof a === 'string' ? [a] : a))]


    take, watch the round, square, round and squere closing brackets at the end.



    [...new Set([..., ...(typeof a === 'string' ? [a] : a)])]
    // ^





    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);








    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);





    let a = 'abcdefg'

    console.log([...new Set([..., ...(typeof a === 'string' ? [a] : a)])]);






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Nov 26 '18 at 12:24









    Bergi

    380k63581914




    380k63581914










    answered Nov 26 '18 at 12:08









    Nina ScholzNina Scholz

    195k15107178




    195k15107178













    • Thanks, my code had a bug. Sorry.

      – tres.14159
      Nov 26 '18 at 13:46



















    • Thanks, my code had a bug. Sorry.

      – tres.14159
      Nov 26 '18 at 13:46

















    Thanks, my code had a bug. Sorry.

    – tres.14159
    Nov 26 '18 at 13:46





    Thanks, my code had a bug. Sorry.

    – tres.14159
    Nov 26 '18 at 13:46













    2














    Instead of using spread, you can use Array.concat(), because it treats combine arrays and values in the same way:






    const a = 'abcdefg'
    console.log([...new Set(.concat(, a))])
    console.log([...new Set(.concat(, [a]))])








    share|improve this answer




























      2














      Instead of using spread, you can use Array.concat(), because it treats combine arrays and values in the same way:






      const a = 'abcdefg'
      console.log([...new Set(.concat(, a))])
      console.log([...new Set(.concat(, [a]))])








      share|improve this answer


























        2












        2








        2







        Instead of using spread, you can use Array.concat(), because it treats combine arrays and values in the same way:






        const a = 'abcdefg'
        console.log([...new Set(.concat(, a))])
        console.log([...new Set(.concat(, [a]))])








        share|improve this answer













        Instead of using spread, you can use Array.concat(), because it treats combine arrays and values in the same way:






        const a = 'abcdefg'
        console.log([...new Set(.concat(, a))])
        console.log([...new Set(.concat(, [a]))])








        const a = 'abcdefg'
        console.log([...new Set(.concat(, a))])
        console.log([...new Set(.concat(, [a]))])





        const a = 'abcdefg'
        console.log([...new Set(.concat(, a))])
        console.log([...new Set(.concat(, [a]))])






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 26 '18 at 12:22









        Ori DroriOri Drori

        81.4k138997




        81.4k138997























            0














            If I understand correctly, if the a parameter is a string, and not a collection, searching unique values and the need for a Set is moot. Then you could short circuit as typeof a === 'string' ? [a] : [...new Set(a)]






            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));








            share|improve this answer
























            • For the record, I like the solution by @OriDrori better ;)

              – Me.Name
              Nov 26 '18 at 13:21
















            0














            If I understand correctly, if the a parameter is a string, and not a collection, searching unique values and the need for a Set is moot. Then you could short circuit as typeof a === 'string' ? [a] : [...new Set(a)]






            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));








            share|improve this answer
























            • For the record, I like the solution by @OriDrori better ;)

              – Me.Name
              Nov 26 '18 at 13:21














            0












            0








            0







            If I understand correctly, if the a parameter is a string, and not a collection, searching unique values and the need for a Set is moot. Then you could short circuit as typeof a === 'string' ? [a] : [...new Set(a)]






            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));








            share|improve this answer













            If I understand correctly, if the a parameter is a string, and not a collection, searching unique values and the need for a Set is moot. Then you could short circuit as typeof a === 'string' ? [a] : [...new Set(a)]






            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));








            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));





            let a = 'abcdefg'

            const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

            console.log(createArr(a));
            console.log(createArr([a,a,'aa']));






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 26 '18 at 13:10









            Me.NameMe.Name

            10.2k22039




            10.2k22039













            • For the record, I like the solution by @OriDrori better ;)

              – Me.Name
              Nov 26 '18 at 13:21



















            • For the record, I like the solution by @OriDrori better ;)

              – Me.Name
              Nov 26 '18 at 13:21

















            For the record, I like the solution by @OriDrori better ;)

            – Me.Name
            Nov 26 '18 at 13:21





            For the record, I like the solution by @OriDrori better ;)

            – Me.Name
            Nov 26 '18 at 13:21


















            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%2f53480678%2farray-destructuring-with-a-ternary-operator%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

            Costa Masnaga

            Fotorealismo

            Sidney Franklin