我有一个嵌套对象,一些属性将float值作为字符串。我的目标是将这些字符串转换为数字格式。 这是一个示例对象
ints = [8, 23, 45, 12, 78]
print [(i,ints[i]) for i in range(len(ints))]
解析后,我希望这个对象看起来像
[(0, 8), (1, 23), (2, 45), (3, 12), (4, 78)]
我已尝试使用以下函数,但字符串不会更改为float
var myObj = {
"value": "text",
"params": {
"check3": false,
"check2obj": {
"params": {
"value3": 35,
"value4": "0.05",
"value5": "0.02",
"value7": "hello",
"local": {
"value4": "263.03",
"value3": 35,
"value2": true,
"value1": "hello1"
}
}
}
}
}
答案 0 :(得分:1)
您可以创建递归函数以通过嵌套对象属性进行迭代,然后使用parseFloat
方法将值转换为float,并使用isNaN
方法检查其是否浮动。
const data = {"value":"text","params":{"check3":false,"check2obj":{"params":{"value3":35,"value4":"0.05","value5":"0.02","value7":"hello","local":{"value4":"263.03","value3":35,"value2":true,"value1":"hello1"}}}}}
function parse(data) {
for (let key in data) {
const n = parseFloat(data[key])
if (typeof data[key] == 'object') parse(data[key]);
if (n && !isNaN(n)) data[key] = n;
}
}
parse(data)
console.log(data)