gpt4 book ai didi

javascript - 在javascript中使用split的递归解析器

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:17 24 4
gpt4 key购买 nike

我有一个算法,用户将输入一个字符串,我会将其解析为 2+ 维数组。因此,例如,用户可以输入 1,2,3;4,5,6 并将文本设置为按分号和逗号解析。第一次通过将创建一个包含 2 个条目的数组。第二次通过将在之前的两个位置创建一个 3 条目数组。

用户可以添加或删除用于解析原始字符串的文本项的数量,例如分号或逗号,这意味着生成的数组可以具有与解析项一样多的维度。

这似乎不是一个难题,但我遇到了一些障碍。

到目前为止,这是我的代码。

vm.parsers = [';', ','];

vm.inputString = "1,2,3,4,5;6,7,8,9,10";

function parseDatasetText( )
{
vm.real = vm.parseMe( vm.inputString, 0);
};


function parseMe( itemToParse, indexToParse )
{
if ( indexToParse < vm.parsers.length )
{
console.log('Parsing *'+itemToParse+'* with '+vm.parsers[indexToParse]);
var tempResults = itemToParse.split( vm.parsers[indexToParse] );
for (var a=0; a<tempResults.length; a++)
{
console.log('Pushing '+tempResults[a]);
tempResults[a] = vm.parseMe( tempResults[a], parseInt( indexToParse ) + 1 )
console.log('This value is '+tempResults[a]);
}
}else
{
console.log('Returning '+itemToParse);
return itemToParse
}
};

从控制台日志可以看出,算法在最后一次解析后吐出了一个未定义的结果,最终的答案是未定义的。

也许我只是没睡够,但我在想数组会通过拆分递归填充吗?

谢谢

最佳答案

function parseDatasetText(){ 
//composing parser from right to left into a single function
//that applies them from left to right on the data
var fn = vm.parsers.reduceRight(
(nextFn, delimiter) => v => String(v).split(delimiter).map(nextFn),
v => v
);

return fn( vm.inputString );
}

不知道还有什么要补充的。

关于javascript - 在javascript中使用split的递归解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com