如何将此函数应用于以下JsonML中的每个匹配元素

How to make this function apply on each matched element in the following JsonML?

本文关键字:元素 JsonML 函数 应用于      更新时间:2024-06-07

我通过markdown js生成了以下JsonML:

[ 'markdown',
  [ 'para', 'This is a paragraph.' ],
  [ 'para', 'Another paragraph' ] ]

我想做的是将类noind添加到每个段落标记中。完整代码:

var text = "This is a paragraph.'n'n" +
  "Another paragraph"
// parse the markdown into a tree and grab the link references
var tree = md.parse(text)
var refs = tree[1]
//console.log(refs)
;(function update_paras(jsonml) {
  if (jsonml[1][0] === 'para') {
    var par = jsonml[1]
    par.splice(1,0,{'class': 'noind'})
  }
})(tree)
var html = md.renderJsonML(md.toHTMLTree(tree))
console.log(html)

现在这个类只添加到第一段:

<p class="noind">This is a paragraph.</p>
<p>Another paragraph</p>

我如何才能将类添加到所有类中?

编辑:

在Gitub上的例子中,他们做了这样的事情(使用link_refs):

if (jsonml[0] === "link_ref") {
  // some code
} else if (Array.isArray(jsonml[1])) {
  jsonml[1].forEach(find_link_refs)
} else if (Array.isArray(jsonml[2])) {
  jsonml[2].forEach(find_link_refs)
}

不过,我不太理解代码。当我尝试同样的方法时,它没有起作用(仍然只有第一段获得了课程)。

不是专家,但这看起来更适合作为答案而不是注释。

您是否尝试过创建一个遍历jsonml数组中所有元素的循环(现在只读取第一个)?类似这样的东西:

;(function update_paras(jsonml) {
    for (x = 1; x < jsonml.length; x++) {
        if (jsonml[x][0] === 'para') {
            var par = jsonml[x]
            par.splice(1,0,{'class': 'noind'})
        }
    }
})(tree)