首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Greasemonkey替换JS代码的字符串

问Greasemonkey替换JS代码的字符串
EN

Stack Overflow用户
提问于 2017-06-29 09:30:11
回答 2查看 123关注 0票数 1

我有个问题。有一个特定的页面,它有一个<script>,我需要在其中调整一些数字。

代码语言:javascript
复制
var series = [{"color": "#666666", "data": [[25.25, 0.0]], "label": "\u0418\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435"}, {"color": "#b72121", "data": [[1, 0.0], [2, 0.0], [3, 0.0], [4, 0.0], [5, 0.0], [6, 0.0], [7, 0.0], [8, 0.0], [9, 0.0], [10, 0.88], [11, 0.0], [12, 0.0], [13, 0.0], [14, 0.0], [15, 0.95], [16, 0.0], [17, 0.0], [18, 1.0], [19, 0.0], [20.25, 0.14894736842105263]], "label": "\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435"}, {"color": "#600101", "data": [[21.5, 0.0], [22.5, 0.0], [23.75, 0.0]], "label": "\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435"}, {"color": "#b72121", "data": [[26.75, 0.056600000000000004]], "label": "\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435-grade_breakdown"}];

数据

代码语言:javascript
复制
( "data": [[1, 0.0], [2, 0.0], [3, 0.0], [4, 0.0], [5, 0.0], [6, 0.0], [7, 0.0], [8, 0.0], [9, 0.0], [10, 0.88], [11, 0.0], [12, 0.0], [13, 0.0], [14, 0.0], [15, 0.95], [16, 0.0], [17, 0.0], [18, 1.0], [19, 0.0], [20.25, 0.14894736842105263]] )

在任何地方都需要更改为1.0。我不知道该怎么做,因为我既不是JS专家,也不是Greasemonkey专家。

EN

回答 2

Stack Overflow用户

发布于 2017-06-29 09:42:39

让我们先看看你的变量的结构:

代码语言:javascript
复制
  var series = [
        {
              "color": "#666666",
              "data": [[25.25, 0.0]],
              "label": "\u0418\u0442\u043e\u0433\u043e\u0432\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435"
        },
        {
              "color": "#b72121",
              "data": [[1, 0.0], [2, 0.0], [3, 0.0], [4, 0.0], [5, 0.0], [6, 0.0], [7, 0.0], [8, 0.0], [9, 0.0], [10, 0.88], [11, 0.0], [12, 0.0], [13, 0.0], [14, 0.0], [15, 0.95], [16, 0.0], [17, 0.0], [18, 1.0], [19, 0.0], [20.25, 0.14894736842105263]],
              "label": "\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435"
        },
        {
              "color": "#600101",
              "data": [[21.5, 0.0], [22.5, 0.0], [23.75, 0.0]],
              "label": "\u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0435"
        },
        {
              "color": "#b72121",
              "data": [[26.75, 0.056600000000000004]],
              "label": "\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0435-grade_breakdown"
        }
  ];

series是一个包含多个元组的数组,你可以通过series[0],series[1]等等来访问它们。元组是一个包含三个键值对的对象。例如,您可以通过series[0].color访问第一个元组的color。color和label的值是Strings。数据的值也是数组。对于第二个元组,可以使用series[1].data[1]访问[2, 0.0]数组。这些值也是数组。如果您想访问前一个元素的值2,它是series[1].data[1][0]。

好的,要更改所有数据值,只需迭代:

代码语言:javascript
复制
  for (var i = 0; i < series.length; i++) {
        var tuple = series[i];
        var data = tuple.data;
        for (var j = 0; j < data.length; j++) {
              var dataContainer = data[j];
              for (var k = 0; k < dataContainer.length; k++) {
                    dataContainer[k] = 1.0;
              }
        }
  }

当然,有一些方法可以帮你完成这项工作,但在我看来,重要的是你要理解它的工作原理。

票数 2
EN

Stack Overflow用户

发布于 2017-06-29 09:36:07

假设你想用1.0替换所有的0.0,在你的声明之后应用:

代码语言:javascript
复制
series.forEach(function(element){
  element.data.forEach(function(data){
     data[1]= 1;
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44814973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档