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

Can't fix my script to log the way I need it

所以这真的让我很紧张。我需要更好地解释一下,所以就在这里。我试图让我的脚本以特定方式登录 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]] 谢谢。

请试试这个,也许这对你有用。

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

您的代码就快完成了,但是您记录到控制台的内容很荒谬,因为它只是 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的第二个参数是一个map函数,你可以进一步简化代码为

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