0

I have a problem. I have this array that I want to convert to an object with dynamic data.

this is the function

const prodSheet2 = prodSheet.map(da => 
                   ({ Artikelnummer: da[0], 
                        Benämning: da[1],
                        AnnanBemäning: da[2],
                        Kortnman: da[3],
                        Artikelgrupp: da[4]}))

and this expels data as:

    0 : {Artikelnummer: 100010, Benämning: aaa, AnnaBenämning: aaa, Kortnamn: a, Artikelgrupp:101}
    1 : {Artikelnummer: 100011, Benämning: aaa, AnnaBenämning: aaa, Kortnamn: b, Artikelgrupp:101}

but I wanted it to be like:

    100010 : {Artikelnummer: 100010, Benämning: aaa, AnnaBenämning: aaa, Kortnamn: a, Artikelgrupp:101}
    100011 : {Artikelnummer: 100011, Benämning: aaa, AnnaBenämning: aaa, Kortnamn: b, Artikelgrupp:101}

I have been trying different ways but cannot figure out. I am writing this in ReactJs

2
  • Please click [<>] snippet editor and create a minimal reproducible example noting INPUT and expected output. Where does the 10010 come from? Commented Feb 12, 2020 at 13:27
  • do you want a single object with Artikelnummer as keys, or more objects? Commented Feb 12, 2020 at 13:33

5 Answers 5

1
 const prodSheet2 = prodSheet.map(da => 
               ([da[0]]:{ Artikelnummer: da[0], 
                    Benämning: da[1],
                    AnnanBemäning: da[2],
                    Kortnman: da[3],
                    Artikelgrupp: da[4]}))

try this or check the js computed value

Sign up to request clarification or add additional context in comments.

2 Comments

This is wrong - you need to use return when using a map, otherwise you will get undefined.
@Harmenx No you don't. The return is implicit with an arrow function. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
1

You can use ES6 spread & Object.assign like below

var prodSheet = 
[
  [100010, "aaa", "aaa", "a", 101],
  [100011, "aaa", "aaa", "b", 101]
];
var result2 = Object.assign({}, ...prodSheet.map(da => ({[da[0]]: { Artikelnummer: da[0], 
                    Benämning: da[1],
                    AnnanBemäning: da[2],
                    Kortnman: da[3],
                    Artikelgrupp: da[4]}})));

                    
console.log(result2);

1 Comment

Does this answer your question? Let me know if you need any help @Oblicion A
1

You could reduce the array and get a single object with Artikelnummer as key for the item informations.

const prodSheet2 = prodSheet.reduce((o, da) =>({
    ...o,
    [da[0]]: {
        Artikelnummer: da[0],
        'Benämning': da[1],
        'AnnanBemäning': da[2],
        Kortnman: da[3],
        Artikelgrupp: da[4]
   }
}), {});

1 Comment

Artikelnummer is undefined, want to use da[0] instead.
0
    const prodSheet2 = prodSheet.map(da => {
        var key = da[0]
        var obj = {}
        obj[key] = {
            da : { 
                Artikelnummer: da[0], 
                Benämning: da[1],
                AnnanBemäning: da[2],
                Kortnman: da[3],
                Artikelgrupp: da[4]
            }
        }
        return obj
    })

Comments

0

This will work.

 const prodSheet2 = prodSheet.reduce((acc, next) => {
    return { 
        ...acc,
        [next[0]]: {
            Artikelnummer: next[0],
            Benämning: next[1],
            AnnanBemäning: next[2],
            Kortnman: next[3],
            Artikelgrupp: next[4]
        }
    };
 }, {});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.