我正在使用存储在S3上的一些xml文件。我使用Node中的xml2js模块来解析xmls,然后我提取其中包含.jpg的字符串。我正在使用过滤器方法,然后尝试使用我自己的for循环,但这并没有任何时间关闭。有没有更快的方法来编写代码的这一部分,或者这是完成它的最快方法。任何帮助表示赞赏。
使用过滤方法:
//this took 52393ms
var file = JSON.stringify(data);
var arrayOfStrings = file.split('"');
var images = arrayOfStrings.filter(function(str) {
return str.indexOf('.jpg') !== -1;
});
resolve(images);
使用for循环:
//this took 52681ms
var file = JSON.stringify(data);
var arrayOfStrings = file.split('"');
var images =[];
for(let i = 0; i < arrayOfStrings.length; i++) {
if(arrayOfStrings[i].indexOf('.jpg') !== -1) {
images.push(arrayOfStrings[i]);
}
}
resolve(images);
使用file.split后,数据如下所示(&#39;&#34;&#39;);
[ '{','rstuv',':{','options',':[{','![alt](CKrgUgiYMflaWnsGZ009.jpg)']];
答案 0 :(得分:5)
var file = JSON.stringify(data); var arrayOfStrings = file.split('"');
不要那样做。如果要搜索数据,请保持结构化。字符串化然后搜索该字符串不仅会给你带来一堆错误(当字符串确实包含引号时),许多数组元素甚至不是正确的字符串,并且几乎没有任何改进,只需将原始XML文件作为文本读取并直接搜索。
相反,只需通过data
对象进行迭代(或在必要时递归)(详情请参阅Access / process (nested) objects, arrays or JSON),并在您希望它们的那些位置过滤字符串(和属性名称?) 。这会快得多。