在JavaScript中过滤字符串数组的最快方法

nas*_*100 0 javascript arrays performance

我正在使用存储在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);
Run Code Online (Sandbox Code Playgroud)

使用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);
Run Code Online (Sandbox Code Playgroud)

使用file.split('"')后,数据如下所示:

[ '{','rstuv',':{','options',':[{','![alt](CKrgUgiYMflaWnsGZ009.jpg)']];
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

var file = JSON.stringify(data);
var arrayOfStrings = file.split('"');
Run Code Online (Sandbox Code Playgroud)

不要那样做.如果要搜索数据,请保持结构化.字符串化然后搜索该字符串不仅会给你带来一堆错误(当字符串确实包含引号时),许多数组元素甚至都不是正确的字符串,并且几乎没有任何改进,只需将原始XML文件作为文本读取并直接搜索.

相反,只需通过data对象迭代(或必要时递归)(有关详细信息,请参阅Access/process(嵌套)对象,数组或JSON),并在您期望的位置过滤字符串(和属性名称?).这会快得多.