I cant deal with a problem to read the datas int an other object.
This is the data. This is sadly not in english but i think its doesent matter.
[
{
termeknev: 'Adatmegosztó',
besorszam: 'TESZOR 61.20.42',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '543,30',
nettoar: '543,30',
afakulcs: 5,
afaertek: '27,16',
bruttoar: '570,46',
id: 1,
},
[
{
termeknev: 'Üzleti elõfizetés',
besorszam: 'TESZOR 61.20.12',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '6000,00',
nettoar: '6000,00',
afakulcs: 27,
afaertek: '1620,00',
bruttoar: '7620,00',
id: 2,
},
{
termeknev: 'Üzleti elõfizetés',
besorszam: 'TESZOR 61.20.12',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '1000,00',
nettoar: '1000,00',
afakulcs: 27,
afaertek: '270,00',
bruttoar: '1270,00',
id: 3,
},
{
termeknev: 'Vállalati Hipernet Start',
besorszam: 'TESZOR 61.20.42',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '2669,29',
nettoar: '2669,29',
afakulcs: 5,
afaertek: '133,46',
bruttoar: '2802,75',
id: 4,
},
{
termeknev: 'Korlátlan sebesség&adat opció',
besorszam: 'TESZOR 61.20.42',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '2362,20',
nettoar: '2362,20',
afakulcs: 5,
afaertek: '118,11',
bruttoar: '2480,31',
id: 5,
},
],
[
{
termeknev: 'Üzleti elõfizetés',
besorszam: 'TESZOR 61.20.12',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '6000,00',
nettoar: '6000,00',
afakulcs: 27,
afaertek: '1620,00',
bruttoar: '7620,00',
id: 12,
},
{
termeknev: 'Üzleti elõfizetés',
besorszam: 'TESZOR 61.20.12',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '1000,00',
nettoar: '1000,00',
afakulcs: 27,
afaertek: '270,00',
bruttoar: '1270,00',
id: 13,
},
{
termeknev: 'Vállalati Hipernet Start',
besorszam: 'TESZOR 61.20.42',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '2669,29',
nettoar: '2669,29',
afakulcs: 5,
afaertek: '133,46',
bruttoar: '2802,75',
id: 14,
},
],
{
termeknev: 'Autóskártya',
besorszam: 'TESZOR 61.20.12',
mennyegys: 'hó',
menny: 1,
nettoegysegar: '1000,00',
nettoar: '1000,00',
afakulcs: 27,
afaertek: '270,00',
bruttoar: '1270,00',
id: 20,
},
];
The problem is that if I want to read the data of "termeknev" I get the
[ "Adatmegosztó", null, null, "Autóskártya" ]
I think the problem is at the "null" is another array but I tried many ways and I cant fix it.
Can someone help me?
CodePudding user response:
The second and third element in the data are type array
not object
.
So if you just get the value like data[1].termeknev
it will return null because there is no property termeknev
in data[1]
. You need to acces it like data[1][0].termeknev
.
If you are iterating through the data array, just check in each iteration if element is type array
, if It is, you need to iterate through that nested array to get the actual values.
CodePudding user response:
Flat
If you don't need to maintain the nested arrays you can flatten the outer array using Array#flat()
and then map()
it to retrieve the desired property.
const input = [{ termeknev: 'Adatmegosztó', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '543,30', nettoar: '543,30', afakulcs: 5, afaertek: '27,16', bruttoar: '570,46', id: 1, }, [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 2, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 3, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 4, }, { termeknev: 'Korlátlan sebesség&adat opció', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2362,20', nettoar: '2362,20', afakulcs: 5, afaertek: '118,11', bruttoar: '2480,31', id: 5, },], [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 12, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 13, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 14, },], { termeknev: 'Autóskártya', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 20, },];
const termeknevFlat = input.flat().map(({ termeknev }) => termeknev);
console.log('Flat:', termeknevFlat);
Nested (known depth)
If you need to maintain the nested arrays and you know there are only 2 levels of nesting, you can use nested map()
calls
const input = [{ termeknev: 'Adatmegosztó', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '543,30', nettoar: '543,30', afakulcs: 5, afaertek: '27,16', bruttoar: '570,46', id: 1, }, [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 2, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 3, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 4, }, { termeknev: 'Korlátlan sebesség&adat opció', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2362,20', nettoar: '2362,20', afakulcs: 5, afaertek: '118,11', bruttoar: '2480,31', id: 5, },], [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 12, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 13, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 14, },], { termeknev: 'Autóskártya', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 20, },];
const termeknevNested = input.map(o =>
Array.isArray(o)
? o.map(({ termeknev }) => termeknev)
: o.termeknev
);
console.log('\nNested:', termeknevNested);
Recursive (arbitrary depth)
If the nesting can be arbitrarily deep you can write a recursive map function which accepts a callback.
const input = [{ termeknev: 'Adatmegosztó', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '543,30', nettoar: '543,30', afakulcs: 5, afaertek: '27,16', bruttoar: '570,46', id: 1, }, [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 2, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 3, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 4, }, { termeknev: 'Korlátlan sebesség&adat opció', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2362,20', nettoar: '2362,20', afakulcs: 5, afaertek: '118,11', bruttoar: '2480,31', id: 5, }, [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 2, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 3, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 4, }, { termeknev: 'Korlátlan sebesség&adat opció', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2362,20', nettoar: '2362,20', afakulcs: 5, afaertek: '118,11', bruttoar: '2480,31', id: 5, },]], [{ termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '6000,00', nettoar: '6000,00', afakulcs: 27, afaertek: '1620,00', bruttoar: '7620,00', id: 12, }, { termeknev: 'Üzleti elõfizetés', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 13, }, { termeknev: 'Vállalati Hipernet Start', besorszam: 'TESZOR 61.20.42', mennyegys: 'hó', menny: 1, nettoegysegar: '2669,29', nettoar: '2669,29', afakulcs: 5, afaertek: '133,46', bruttoar: '2802,75', id: 14, },], { termeknev: 'Autóskártya', besorszam: 'TESZOR 61.20.12', mennyegys: 'hó', menny: 1, nettoegysegar: '1000,00', nettoar: '1000,00', afakulcs: 27, afaertek: '270,00', bruttoar: '1270,00', id: 20, },];
const recursiveMap = (arr, cb) =>
arr.map((obj, i, _arr) =>
Array.isArray(obj)
? recursiveMap(obj, cb)
: cb(obj, i, _arr)
)
const termeknevRecursive = recursiveMap(input, ({ termeknev }) => termeknev);
console.log('\nRecursive:', termeknevRecursive);