I am trying to reduce an array of strings into individual strings, it works well only if i have one string within each array, but not more than one.
const listItems = [
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-1'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-2'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-3'
}
}
];
const listIds = listItems.reduce((a, currentValue) =>
[...a, currentValue.sys.id], [])
// I have also tried `mlistId.toString()`
console.log(...listIds)
Currently i get, for example:
m-list-basic-1 m-list-basic-2 m-list-basic-3 (all on the same line using spread)
m-list-basic-1,m-list-basic-2,m-list-basic-3 (comma'ed using toString()
whereas i want them individual like so:
m-list-basic-1
m-list-basic-2
m-list-basic-3
If you're trying to print the id as a new line separated string, you don't need reduce to do this. Instead, you want to use Array.map, combined with String.join with a \n character.
See example below:
const listItems = [
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-1'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-2'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-3'
}
}
];
console.log(listItems.map(item => item.sys.id).join('\n'));
Try with forEach:
const listItems = [
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-1'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-2'
}
},
{
sys: {
type: 'Link',
linkType: 'Entry',
id: 'm-list-basic-3'
}
}
];
const listIds = listItems.reduce((a, currentValue) =>
[...a, currentValue.sys.id], [])
listIds.forEach(l => console.log(l))