简体   繁体   English

数组和对象以及 javascript 映射

[英]Arrays and objects and javascript map

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我正在用 ReactJs 写这个

 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试试这个或检查js计算值

You could reduce the array and get a single object with Artikelnummer as key for the item informations.您可以减少数组并使用Artikelnummer作为项目信息的键来获取单个对象。

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]
   }
}), {});

You can use ES6 spread & Object.assign like below你可以像下面一样使用ES6 spread & Object.assign

 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);

    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
    })

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]
        }
    };
 }, {});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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