gpt4 book ai didi

javascript - 返回匹配单词的行及其后的行,并按降序排列

转载 作者:行者123 更新时间:2023-11-29 18:47:11 25 4
gpt4 key购买 nike

需要说明的是,我需要 JavaScript 方面的帮助,而不是 Powershell。下面我在 Powershell 中的示例仅用于演示。

我想在 Javascript 中实现的是返回包含匹配词 banana 的行及其后面的行,最后按降序排列。

示例输入数据:

2018-01-01 Product: Apple Some text

2018-01-01 Price: Euro 1 Some text

2018-01-02 Product: Banana Some text

2018-01-02 Price: Euro 3 Some text

2018-01-03 Product: Orange Some text

2018-01-03 Price: Euro 4 Some text

2018-01-04 Product: Banana Some text

2018-01-04 Price: Euro 1 Some text

这在 Powershell 中对我有用:

$input = Get-Content -Path $inputRaw | Select-String -Pattern "banana (.*)" -Context 0,1
$input | Group-Object -Property Name | Sort-Object -Property Name | ForEach-Object {$_.Group | Sort-Object} > $output

变量输出的结果应该是:

2018-01-02 Product: Banana Some text

2018-01-02 Price: Euro 3 Some text

2018-01-04 Product: Banana Some text

2018-01-04 Price: Euro 1 Some text

最佳答案

您可以使用 reduce通过找到带有 Bananas 的行和之后的行,并将它们插入新数组来创建一个新的项目数组。

const input = `2018-01-01 Product: Apple Some text
2018-01-01 Price: Euro 1 Some text
2018-01-02 Product: Banana Some text
2018-01-02 Price: Euro 3 Some text
2018-01-03 Product: Orange Some text
2018-01-03 Price: Euro 4 Some text
2018-01-04 Product: Banana Some text
2018-01-04 Price: Euro 1 Some text
2018-01-04 Product: Apple Some text
2018-01-04 Price: Euro 1 Some text
2018-01-04 Product: Pear Some text
2018-01-04 Price: Euro 1 Some text`;

function find(text, ...words) {
return text.split(/\r\n|\n/).reduce((arr, val, idx, orig) => {
return words.some(w => val.includes(w)) ? arr.concat(orig[idx], orig[idx + 1]) : arr
}, [])
}

document.querySelector('textarea').value = find(input, 'Banana', 'Orange').join('\n')
console.log(find(input, 'Pear'))
<textarea rows="6" cols="50"></textarea>

编辑

您可以将一个单词数组传递给该函数(如果需要,我使用了 spread syntax 方法,但对 IE 的支持不多),然后我使用 some在这些词上检查是否至少有一项与字符串匹配。

关于javascript - 返回匹配单词的行及其后的行,并按降序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976816/

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