2017-06-29 1 views
1

J'ai un problème. Il y a une page spécifique, whick a une <script>, que je dois modifier quelques chiffres dans.Greasemonkey remplace la chaîne de code JS

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"}]; 

les données

("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]]) 

a besoin d'être changé à 1,0 partout. Et je n'ai aucune idée de comment faire cela car je ne suis pas un expert en JS ni Greasemonkey.

+0

https://www.w3schools.com/js/js_json_objects.asp – Cameron

+0

@ ПавелВтюрин Si un utilisateur a répondu à votre question, veuillez aussi ** accepter ** sa réponse ([Accepter les réponses: Comment ça marche?] (Https: //meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)). Si ce n'est pas le cas, veuillez préciser ce qui reste sans réponse, c'est une partie très importante de StackOverflow, merci beaucoup. – Zabuza

Répondre

0

En supposant que vous voulez remplacer tous les 0.0 par 1.0, appliquer cette après votre déclaration:

series.forEach(function(element){ 
    element.data.forEach(function(data){ 
    data[1]= 1; 
    }); 
}); 
2

permet de prendre d'abord un coup d'œil à la structure de votre variable:

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" 
     } 
    ]; 

D'accord, ce avons-nous? series est un tableau contenant plusieurs tuples, vous pouvez y accéder par series[0], series[1] et ainsi de suite. Un tuple est un objet contenant trois paires de valeurs-clés. Par exemple vous pouvez accéder à color du premier tuple par series[0].color. Les valeurs de color et label sont String s. La valeur des données sont à nouveau des tableaux. Pour la deuxième ligne, vous pouvez accéder au tableau [2, 0.0] en utilisant series[1].data[1]. Ces valeurs sont à nouveau des tableaux. Si vous voulez accéder à la valeur 2 de l'élément précédent, il s'agit de series[1].data[1][0].

Bon, pour changer toutes les valeurs de données dont vous avez besoin juste pour itérer:

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; 
       } 
     } 
    } 

Bien sûr, il y a des méthodes qui font ce travail pour vous, mais à mon avis, il est important que vous compreniez comment cela fonctionne dans principe.