在JavaScript中处理任意大的入站数据

时间:2017-06-06 10:33:09

标签: javascript

这是一个从字符串中删除指定字符的函数:

function remove(str, chars) {
    var set = new Set(chars);
    return [...str].filter(i => !set.has(i)).join('');
}

console.log(remove('hello world', 'el') === 'ho word'); // true

但是......如果入站字符串是任意大的并且可能会不断扩展呢?

据推测,我们需要一种完全不同的策略来逐步处理它?<​​/ p>

这样的实现看起来像构建一个缓冲对象,它会在数据入站时定期更新,然后使用采样逻辑来处理“delta”,处理它并传递它吗?

并且这必须异步完成以避免阻塞事件循环中的其他所有内容吗?

这基本上是Node.js流的内容吗?

1 个答案:

答案 0 :(得分:1)

[... str]会将字符串转换为1个字符的字符串数组,这会占用额外的内存。然后.filter()将生成另一个字符串数组,这些数组可能与前一个字符串一样大,具体取决于输入数据。结束,结果字符串。

如果您担心可能的内存和/或性能,可以使用常规循环“for”和“charAt”函数来实现。