【发布时间】:2017-06-06 04:50:04
【问题描述】:
我有一个文件想用 Javascript 解析:
---
title: This is a great title
date: 2012-03-02 11:30:00 -04:00
published: false
---
data_one
data_two
data_three
由此,我只想输出:
['data_one', 'data_two', 'data_three']
这意味着我需要跳过前五行。
虽然我可以轻松地让我的脚本自动跳过前五行,但我希望它足够健壮,即使在其中添加了额外的项目,它也会跳过前面的内容。这是我当前的实现:
const result = rawFileStr.split('\n')
.reduce((acc, item) => {
const endOfFrontMatter = acc === false && item === '---';
const isFrontMatter = acc === false || item === '---';
if (endOfFrontMatter) {
return [];
}
return isFrontMatter ? false : acc.concat(item)
}, [])
它基本上将累加器设置为false,表示它命中第一个---,然后在命中第二个---时,它返回一个空数组。
它有效,但所有这些 if 语句让我觉得这不是执行此操作的“功能方式”。有人可以阐明如何使用纯函数式编程来做到这一点吗?
【问题讨论】:
标签: javascript arrays node.js functional-programming