So I have an array of objects :
var arr = [
{name: 'John', cars: '2', railcard: 'yes', preferences: ['taxi', 'tram', 'walking']},
{name: 'Mary', cars: '0', railcard: 'no', preferences: ['cyling', 'walking', 'taxi']},
{name: 'Elon', cars: '100000', railcard: 'no', preferences: ['Falcon 9', 'self-driving', 'Hyper-loop']}
];
I'm trying to transform the above array using map, filter, an reduce. I'm having trouble altering the original array even though I can easily isolate a specific data set.
For example:
I'm trying to change the amount of cars owned by each person to be a number and not a string so...
var cars = arr.map(function(arr) {return arr.cars});
var carsToNumber = cars.map(function(x) {return parseInt(x)});
How do I now replace the original string values in the array?
Expected result:
var arr = [
{name: 'John', cars: 2, railcard: 'yes', preferences: ['taxi', 'tram', 'walking']},
{name: 'Mary', cars: 0, railcard: 'no', preferences: ['cyling', 'walking', 'taxi']},
{name: 'Elon', cars: 100000, railcard: 'no', preferences: ['Falcon 9', 'self-driving', 'Hyper-loop']}
];
The way to do this with
map
would be to return a new copy. If you want to modify the original data, use a simple loop.map
example:You can just use
forEach
loop and change string to number.map()
method creates a new array.