【发布时间】:2018-05-25 03:00:08
【问题描述】:
问题:
我有一个大字符串(它是 HTML 格式),我需要从中选择多个子字符串,然后将它们推送到对象数组中。请注意:我无法更改原始字符串。下面的例子是一个简化版本。
我需要什么:
包含“食谱”信息的对象数组,如下所示:
const recipes = [
{
title: "This is title number 1",
imagelink: "/exampleimage1.jpg",
recipelink: "www.examplelink1.com"
}, {
title: "This is title number 2",
imagelink: "/exampleimage2.jpg",
recipelink: "www.examplelink2.com"
}]
字符串的样子:
这是字符串的简化版本。原来的包含更多字符和更多标签,如 href 等。所以我不能只过滤这些子字符串。如您所见,图像的标题、链接和链接不止一次出现。因此,将哪个副本推入数组无关紧要,只要它们属于它们的“父”配方。
<section class="item recipe " data-title="This is title number 1" data-record-type="recipe">
<figure class="">
<a href="www.examplelink1.com">
<span class="favorites-wrapper">
<span class="favorite shadow " data-is-favorite="false" data-recipe-id="11111" data-recipe-title="This is title number 1">
</span>
</span>
<span class="type">recept</span>
<img src="images/blank-16x11.gif" data-src="/exampleimage1.jpg" class="js-lazyload" data-retina-src="/exampleimage1.jpg" alt="This is title number 1">
</a>
</figure>
<header>
<h4> <a href="www.examplelink1.com"> This is title number 1 </a> </h4>
<div class="rating">
<span><div class="icon icon-star active"></div></span>
<span><div class="icon icon-star active"></div></span>
<span class="count">(<span>84</span>)</span>
</div>
<div class="time">15 min.</div>
</header>
</section>
<section class="item recipe " data-title="This is title number 2" data-record-type="recipe">
<figure class="">
<a href="www.examplelink2.com">
<span class="favorites-wrapper">
<span class="favorite shadow " data-is-favorite="false" data-recipe-id="22222" data-recipe-title="This is title number 2">
</span>
</span>
<span class="type">recept</span>
<img src="images/blank-16x11.gif" data-src="/exampleimage2.jpg" class="js-lazyload" data-retina-src="/exampleimage2.jpg" alt="This is title number 2">
</a>
</figure>
<header>
<h4> <a href="www.examplelink2.com"> This is title number 2 </a> </h4>
<div class="rating">
<span><div class="icon icon-star active"></div></span>
<span><div class="icon icon-star active"></div></span>
<span class="count">(<span>84</span>)</span>
</div>
<div class="time">15 min.</div>
</header>
</section>
我不确定我的 JavaScript 知识是否足以解决这个问题。非常感谢您的帮助!
【问题讨论】:
-
所以你想达到什么目的?
-
查看 HTML 解析和 JavaScript。这是你最好的方法。
-
@messerbill 我正在尝试从这个字符串中捕获数据值!
标签: javascript arrays string substring push