Javascript 将所有字符串值从JSON响应转换为int

Javascript 将所有字符串值从JSON响应转换为int,javascript,json,Javascript,Json,对于这个初学者的问题,很抱歉: 我得到的回应是: {id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "15487.0"} 现在我想把rank:1,price\u usd:15487.0”转换成rank:1,price\u usd:15487.0 我之所以需要它,是因为我的表对字母数字而不是数字进行排序 我怎么做呢?你可以用 var obj = {id: "bitcoin", name: "Bitcoin"

对于这个初学者的问题,很抱歉:

我得到的回应是:

{id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "15487.0"}
现在我想把
rank:1,price\u usd:15487.0”
转换成
rank:1,price\u usd:15487.0

我之所以需要它,是因为我的表对字母数字而不是数字进行排序

我怎么做呢?

你可以用

var obj = {id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "15487.0"};

Object.keys(obj).forEach((itm) => {
 if(!Number.isNaN(+obj[itm])) obj[itm] = +obj[itm];
});

console.log(obj);
一个简单的数字转换在这里起作用。如果使用
+
运算符将非数字字符串转换为数字,它将返回
NaN
。通过使用它,我们可以实现你想要的

如果您想使用可靠的方法检查
NaN
,请使用以下方法

var obj = {id: "bitcoin", name: "Bitcoin", symbol: "BTC", rank: "1", price_usd: "15487.0"};

Object.keys(obj).forEach((itm) => {
 let conv = +obj[itm];
 if(conv == conv) obj[itm] = +obj[itm];
});

console.log(obj);

这是一个可靠的方法。因为根据ECMA脚本,检查数字是否为NaN的可靠方法是检查数字是否等于自身。如果它不相等,则该数字为
NaN

如果您使用mysql作为数据库,则可以将表中的列
列设为int,将price_usd设为
decimal
,然后排序将正常工作

如果要转换数据客户端。那么你可以这样做

for(var k in data) {
if(k == 'price_usd') {
 data[k] = parseFloat(data[k]);
  }
// for rank also
 }
可用于转换或筛选值:

j='{“id”:“bitcoin”,“name”:“bitcoin”,“symbol”:“BTC”,“rank”:“1”,“price_usd”:“15487.0”}'
解析(j,(k,v)=>isNaN(+v)?v:+v)

console.log(o)
即使将字符串转换为数字,本机排序顺序仍将是字典顺序。搜索数字排序。问题是排序功能。您需要自定义数字排序是否仍保留字符串,以便
“0”
@charlietfl谢谢,我真的没想到。刚刚更新了答案。@charlietfl
NaN
也是一个数字。思考更好的解决方案。等一下