Philipp Philipp - 3 months ago 9
Javascript Question

Change array index with array.map()

Is it somehow possible to iterate an array in JS using

Array.map()
and modify the index values of the resulting array?

// I start with this values:
var arrSource = [
{id:7, name:"item 1"},
{id:10, name:"item 2"},
{id:19, name:"item 3"},
];

var arrResult = arrSource.map(function(obj, index) {
// What to do here?
return ???;
});

/*
This is what I want to get as result of the .map() call:

arrResult == [
7: {id:7, name:"item 1"},
10: {id:10, name:"item 2"},
19: {id:19, name:"item 3"},
];
*/

Answer

No. Array#map performs a 1:1 mapping (so to speak).

You'd have to create a new array and explicitly assign the elements to the specific indexes:

var arrResult = [];
arrSource.forEach(function(value) {
   arrResult[value.id] = value;
});

Of course you can use .reduce for that too.