Given an array of json objects, how do I convert values ​​to each object in int or float?

Given an array of json objects, how do I convert values ​​to each object in int or float?

var data = [{
    "rank": "1",
    "name": "Bill"
  },
  {
    "rank": "2",
    "name": "Ted"
  },
  {
    "rank": "3",
    "name": "John"
  },
  {
    "rank": "4",
    "name": "Jane"
  }
]

The json objects I use are much larger in both dimensions, so I'm trying to figure out how I can use the map function to convert part of the "rank" from stringto int. There are other parts that I want to convert to floats, but now sorting by "grades" sorts 1,10,11,12,etc.

How can i do this? I am using React / ES6 / JSX / Babel or something similar.

+4
source share
5 answers

You can simply map your data array and return a new object with your user data when parsing "rank"to Number.

parseInt parseFloat.

const data = [
    {"rank": "1","name": "Bill"},
    {"rank": "2","name": "Ted"},
    {"rank": "3","name": "John"},
    {"rank": "4","name": "Jane"}
]

const formatted = data.map(user => ({ 
  ...user, // collect all the properties of each user
  rank: parseInt(user.rank) // specifically parse the rank
}))

console.log('data', data)
console.log('formatted', formatted)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>
+2

 var data = [{"rank": "1","name": "Bill"},
            {"rank": "2.4","name": "Ted"},
            {"rank": "3","name": "John"},
            {"rank": "4.5","name": "Jane"}];

 data.map(d => d.rank = +d.rank);    

 console.log(data);

Fiddler

+2

You can use the + operator to convert to int or float. Try the following:

var data = [
    {"rank": "1","name": "Bill"},
    {"rank": "2.4","name": "Ted"},
    {"rank": "3","name": "John"},
    {"rank": "4.5","name": "Jane"}];
    
data.forEach(d => d.rank = +d.rank);    

console.log(data);
Run code
+1
source

You can use Number to convert from stringto number.

var data = [{
        "rank": "1",
        "name": "Bill"
    },
    {
        "rank": "2",
        "name": "Ted"
    },
    {
        "rank": "3",
        "name": "John"
    },
    {
        "rank": "4",
        "name": "Jane"
    }
];

var newData = data.map(function (item) {
    item.rank = Number(item.rank)
    return item;
});

console.log(newData);
Run code
+1
source

You can use +to convert strings to numbers.

var data = [ {"rank": "1","name": "Bill"}, {"rank": "2","name": "Ted"}, {"rank": "3","name": "John"}, {"rank": "4","name": "Jane"}],
    result = data.map(({rank, name}) => ({rank : +rank, name}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run code
+1
source

Source: https://habr.com/ru/post/1690116/


All Articles