深入搜索并替换javascript中的浮点值

时间:2018-04-24 10:53:58

标签: javascript parsing

我有一个嵌套对象,一些属性将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"
        }
      }
    }
  }
}

1 个答案:

答案 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)