我在我的母语下面有html代码,我正在尝试将其转换为我可以处理的数组。所以我想要的是将它拆分为一个数组,它避免使用强标记并按<br>
拆分,但不能添加一个空对象与最后<br>
var ingredients = $('div.ingredients p').html().replace(/<(?!br\s*\/?)[^>]+>/g, '').split("<br>");
HTML
<p>
<strong>Dressing: </strong>
<br>
2-3 spsk græsk yoghurt, gerne 10 %
<br>
1 lille spsk god mayonnaise
<br>
1-2 tsk æbleeddike
<br>
1-2 tsk honning
<br>
himalayasalt og friskkværnet hvid peber
<br>
</p>
期望的输出
["2-3 spsk græsk yoghurt, gerne 10 %", "1 lille spsk god mayonnaise", "1-2 tsk æbleeddike", "1-2 tsk honning", "himalayasalt og friskkværnet hvid peber"]
答案 0 :(得分:0)
您可以使用pop()
删除最后一个元素。
var ingredients = $('div.ingredients p').html().replace(/<(?!br\s*\/?)[^>]+>/g, '').split("<br>");
ingredients.pop();
//[" Dressing: ", " 2-3 spsk græsk yoghurt, gerne 10 % ", " 1 lille spsk god mayonnaise ", " 1-2 tsk æbleeddike ", " 1-2 tsk honning ", " himalayasalt og friskkværnet hvid peber "]
答案 1 :(得分:0)
假设最后一个br可能存在或不存在(或者更糟糕的是可能存在多个br),最好的事情是在拆分后过滤掉空元素
类似的东西:
$('div.ingredients p')
.html()
.replace(/<(?!br\s*\/?)[^>]+>/g, '')
.split("<br>")
.filter(function(e) { return e.trim() !== ''})
此外,我感觉您必须更换,并且\ n用&#39;&#39;
答案 2 :(得分:0)
如果您想要使用原生ES6 Javascript:
function split(selector) {
const elem = document.querySelector(selector);
const content = elem && elem.innerHTML;
if (!content) { return null; }
return content
.split('<br>')
.map(it => it.trim())
.filter(it => !!it && !it.startsWith('<strong>'));
}
使用:
const res = split('div.ingredients p')
console.log(res);
输出是:
["2-3 spsk græsk yoghurt, gerne 10 %", "1 lille spsk god mayonnaise", "1-2 tsk æbleeddike", "1-2 tsk honning", "himalayasalt og friskkværnet hvid peber"]