批量修改对象中的key值如批量对key做数学运算

29次阅读

共计 949 个字符,预计需要花费 3 分钟才能阅读完成。

需要自己做一份有关数字的 json 文件,发现 json 数据局部有规律,可以通过批量 key 运算,减少手动输入的操作。看了很多办法,最终采用了,对象转字符串的操作方法,替换掉对应的数据。

需求:批量对 ’16.23’ 这一列做数学运算,譬如 +0.6

let s = {
  '16.23': 55,
  '16.18': 60,
  '16.13': 65,
  '16.09': 66,
  '16.05': 67,
  '16.01': 68,
  '15.57': 69,
  '15.53': 70,
  '15.50': 71,
  '15.47': 72,
  '15.44': 73,
  '15.41': 74,
  '15.38': 75,
  '15.35': 76,
  '15.32': 77,
  '15.29': 78,
  '15.26': 79,
  '15.23': 80,
  '15.20': 81,
  '15.17': 82,
  '15.14': 83,
  '15.11': 84,
  '15.08': 85,
  '15.05': 86,
  '15.02': 87,
  '14.59': 88,
  '14.56': 89,
  '14.53': 90,
  '14.50': 91,
  '14.47': 92,
  '14.44': 93,
  '14.41': 94,
  '14.38': 95,
  '14.33': 96,
  '14.28': 97,
  '14.23': 98,
  '14.18': 99,
  '14.13': 100
}
let json = JSON.stringify(s)
let len = json.length
json = json.substring(1, len - 1)
len = json.length
for (let m = 0; m < 11; m++) {for (let i = 0; i < (len / 11); i++) {
    let begin = 11 * i
    let num = parseFloat(json.substring(begin + 1, begin + 6)) - 0.13
    let f = num - Math.floor(num)
    if (f > 0.6) {
      // f = f - 0.6
      // num = Math.floor(num) + 1 + f
      f = f - 0.4
      num = Math.floor(num) + f
    }
    let str = '"'+ num.toFixed(2) +'"'
    json = json.substring(0, begin) + str + json.substring(begin + 7, len)
  }
  console.log(json)
}

正文完
 0