首页 > 解决方案 > 对 Json 值进行数学运算,在 For 循环中不起作用

问题描述

我正在尝试替换 JSON 格式变量中的值。

这是我的数据格式:

{
      "y":-10.9569,
      "x":26.4007,
      "z":11.9888,
      "t":109.122
    },
    {
      "y":-9.78734,
      "x":6.85818,
      "z":11.9832,
      "t":109.439
    },
    {
      "y":-9.30135,
      "x":-2.72265,
      "z":11.9493,
      "t":109.594
    },
    {
      "y":-7.90726,
      "x":-33.3971,
      "z":12.012,
      "t":110.14
    },
    {
      "y":-6.8483,
      "x":-56.5212,
      "z":11.916,
      "t":110.611
    },

我试过这段代码,但它输出的值没有改变:

for(var i = 1; i < json.length; i++ ) {
            json.recording.path[i].t = json.recording.path[i].t*0.9;
    }
console.log(json);

但是当我省略for循环时,代码会正确替换该值:

json.recording.path[1].t = json.recording.path[1].t*0.9;
console.log(json);

这里有什么问题?

标签: javascriptjson

解决方案


您正在迭代变量“json”的长度,但修改了“json.recording.path”。您也是从索引 1 而不是 0 开始的,这将导致它跳过第一个元素。

试试这个:

for(var i = 0; i < json.recording.path.length; i++ ) {

(正如一些人在评论中指出的那样,这不是 JSON,它是一个 javascript 对象。JSON 是一种用于传输和存储对象的字符串格式。)


推荐阅读