无法修复我的脚本以记录所需的方式

时间:2019-07-02 23:05:52

标签: javascript tampermonkey

这真的让我感到不安。我需要对此做一些更好的解释。我正在尝试以一种特定的方式使我的脚本登录google的控制台。我有一些图片可以帮助解释。.让我们跳进去。

首先,这是当前的记录方式。到目前为止,这很好。我对此很满意。它不是一个大阵列,美观而整洁。 下图: (https://i.gyazo.com/81fc8d76b34a81f4fff7fc23e94f1bf1.png

这是发出的最后一个日志(您可以在上图中看到。)它只是按照我需要它记录日志的方式进行了编辑: [[346,453],[346,452],[346,452],[346,453],[346,453],[347,453],[347,453],[347,454],[348,454],[349,454],[350,454],[351,454],[352,454],[353,454],[354,454],[354,453],[355,452],[355,453]]

所以我试图使所有日志都这样发送。^^用逗号替换每对之间的空格,并在每对之间添加“ [”和“]”。

所以我希望它如何记录: (真的有帮助) (https://i.gyazo.com/af179df0b2ce93f018809f6921bce59a.png

我的脚本:

xhr=new XMLHttpRequest();

xhr.open("GET", "http://myurl.com/someURLWITH.svg");

xhr.addEventListener("load", function() {
const xmlDoc = new DOMParser().parseFromString(
this.responseText.trim(),
"image/svg+xml"
);

const polylines = Array.from(xmlDoc.getElementsByTagName('polyline'));

var Lines = (polylines.map( pl => pl.getAttribute('points').split(' ').map(
pair => pair.split(',').map(x=>+x),

console.log("[" + pl.getAttribute('points') + "]")
)
));
});
xhr.send();

请记住!!!我不希望它成为一个大型阵列!!!!它分别记录每个日志的方式非常完美。.我只需要更改它记录每个日志的方式。

因此,在我的代码中,您可以看到console.log("[" + pl.getAttribute('points') + "]")试图使它像这样console.log("[" + pl.getAttribute("[" + 'points' + "]") + "]")确实是祈祷这样做会成功,但我错了。像往常一样。

是的,不是像[346,453 346,452 346,452 346,453 346,453 347,453 347,453 347,454 348,454 349,454 350,454 351,454 352,454 353,454 354,454 354,453 355,452 355,453] 这样记录日志,而是希望像[[346,453],[346,452],[346,452],[346,453],[346,453],[347,453],[347,453],[347,454],[348,454],[349,454],[350,454],[351,454],[352,454],[353,454],[354,454],[354,453],[355,452],[355,453]]这样记录日志,谢谢。

2 个答案:

答案 0 :(得分:0)

请尝试一下,也许这对您有用。

var dt = "346 453 346 452 346 452 346 453 346 453 347 453 347 453 347 454 348 454 349 454 350 454 351 454 352 454 353 454 354 454 354 453 355 452 355 453";

function fnGetObject(data) {
    var objList = [];
    var obList = data.split(' ');

    var obResult = []
    for (var i = 0; i < obList.length; i += 2) {
        obResult.push([parseInt(obList[i]), parseInt(obList[i + 1])]);
    }
    return JSON.stringify(obResult);
}

console.log(fnGetObject(dt));

答案 1 :(得分:0)

您的代码几乎在那里,但是您登录到控制台的内容却很荒谬,因为它只是未修改的points属性

所以,像这样

const polylines = Array.from(xmlDoc.getElementsByTagName('polyline'));
const Lines = polylines.map(pl => pl.getAttribute('points').split(' ').map(pair => pair.split(',').map(Number)));

Lines.forEach(line => console.log(JSON.stringify(line)));

或者,鉴于Array.from的第二个参数是一个映射函数,您可以进一步简化代码到

const Lines = Array.from(xmlDoc.getElementsByTagName('polyline'), pl => pl.getAttribute('points').split(' ').map(pair => pair.split(',').map(Number)));

Lines.forEach(line => console.log(JSON.stringify(line)));

注意,console.log在处理之后完成

至于评论

Lines.forEach(line => {
    // here you can post each line to whatever you need
});