有没有什么解决方案可以让我用Node.js将这么多字符处理成一个字符串
Is there any solution that will allow me to process this many characters into a string with Node.js?
我的问题:
有什么解决方案可以让我用Node.js将这么多字符处理成一个字符串吗?
问题:
我需要在Node.js中计算一个巨大的(数组,然后)字符串的字符组合,如下所示:
var fs = require('fs');
var legalChars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '_'];
var fiveChars = [legalChars,
legalChars,
legalChars,
legalChars,
legalChars];
//output all possible combinations of the arrays within
//fiveChars
function allPossibleCases(arr) {
if (arr.length === 0) {
return [];
} else if (arr.length === 1) {
return arr[0];
} else {
var result = [];
var allCasesOfRest = allPossibleCases(arr.slice(1));
// recur with the rest of array
for (var c in allCasesOfRest) {
for (var i = 0; i < arr[0].length; i++) {
result.push(arr[0][i] + allCasesOfRest[c]);
var val = arr[0][i] + allCasesOfRest[c];
}
}
return result;
}
}
// join array of results into string
var result = allPossibleCases(fiveChars).join('", "');
// this essentially writes the string in the form of a Node module
//containing a giant array
fs.writeFile("./data/fiveChars.js",
'fiveChar = ["' + result + '"]; 'r'n module.exports = fiveChar;',
function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
我想继续添加最多16行的字符行:
var sixteenChars = [legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars, legalChars];
问题是Node无法同时处理这一切。
致命错误:JS分配失败-进程内存不足中止
我不想下载更多的RAM,只是想找到一种方法来处理这个计算过程,而不是填满内存分配。
由于我现在喜欢使用highland
,我想我应该在这里发布一个解决方案作为练习,我认为应该将内存扩展到很多组合。它可能对你来说太慢了,我不知道,因为你想要生成的是37^16的组合,这是很多。
此解决方案将创建一个包含所有解决方案的文件,这些解决方案由5个字符的新行分隔。也许你可以试试,看看它是否适合你的盒子;-)。转到16个字符的情况,只需要添加新的flatMap调用。
随时通知我!您可以tail -f
文件以查看它的增长。
var fs = require('fs');
var _ = require('highland');
var legalChars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '_'];
var suffixer = function(alphabet) {
var len = alphabet.length;
return function(prefix) {
var i = 0;
return _(function(push, next) {
if (i == len) {
push(null, _.nil);
} else {
push(null, prefix + alphabet[i]);
i++;
}
next();
})
}
}
var s = _([''n'])
.flatMap(suffixer(legalChars))
.flatMap(suffixer(legalChars))
.flatMap(suffixer(legalChars))
.flatMap(suffixer(legalChars))
.flatMap(suffixer(legalChars))
s.pipe(fs.createWriteStream('alpha.txt'));
现在,为什么要生成这么多组合是另一个问题!
相关文章:
- 处理JSON字符串会导致JavaScript错误
- RegEx:处理特殊字符
- Jquery处理ID中的特殊字符
- 如何处理多种语言的表单验证(特殊字符):AngularJS
- 如何处理带有点 (.) 字符的 angularJS UI 路由器
- 如何处理节点.js中/从节点输出的 (cli) 标准输出流的字符编码
- 如何将 url 中的特殊字符作为参数值处理
- 处理 PHP/JavaScript 中带有特殊字符的 URL
- 使用 Javascript/Windows 批处理文件混合将非 ASCII 字符编码为 HTML
- Internet Explorer 9上的Javascript未处理字符NULL(ASCII 0)
- JSON.分析未处理非法字符
- jQuery处理程序,以知道何时在输入文本元素中键入了至少1个字符
- IE中未处理控制键+字符
- 如何处理Microsoft Word字符编码
- 在Java/JSP中处理的MS-WORD特殊字符
- 有没有什么解决方案可以让我用Node.js将这么多字符处理成一个字符串
- 如何填充webview在android与纯文本从数据库,并能够处理换行字符
- 为什么这个greasemonkey代码不能处理UTF8字符?
- JSON:处理textArea中的换行符(和其他无效的JSON字符)
- 密码.Match不能处理特殊字符