Cheerio NPM,需要一种安全的方法来帮助将具有相同类/标识/属性的项目分组和分开

时间:2018-07-09 18:02:43

标签: jquery node.js cheerio

对于这个npm,我正在寻找一种简单的方法来将元素获得的所有值推入数组。例如,到目前为止,我做到了:

func perform<T>(
    _ expression: @autoclosure () throws -> T,
    orThrow error: Error
) throws -> T { ...

但是,这实际上并不是按照元素的索引形式拼接元素,而是将它们分组为一个。如何通过将它们从“ $”中提取到数组的方式相应地对其进行分隔,例如:

let names = $(".productname") 
let arr = []
arr.push(names.text())

而不是:

arr[0] = value1
arr[1] = value2 

我的代码:

arr[0] = value1 value2 (concatenated)

}

页面源:https://hastebin.com/ayeqodufog.xml

2 个答案:

答案 0 :(得分:1)

由于选择器包含所有具有“ productname”类的元素,因此您将需要遍历该集合以将每个元素的文本推入数组。

下面,我使用了jQuery的each()

'Barear ' + token
let names = $(".productname");
let arr = [];

$.each(names, function(k, v) {
  arr.push($(v).text());
});

console.log(arr);

或者,您可以尝试map()

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="productname">Test 1</div>
<div class="productname">Test 2</div>
<div class="productname">Test 3</div>
let names = $(".productname");

let arr = $.map(names, function(v) {
  return $(v).text();
});

console.log(arr);


带有实际HTML的示例:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="productname">Test 1</div>
<div class="productname">Test 2</div>
<div class="productname">Test 3</div>
let names = $(".productname");

let arr = $.map(names, function(v) {
  return $(v).text();
});

console.log(arr);

答案 1 :(得分:0)

使用map()get()

let arr = $(".productname").map((i, el) => $(el).text()).get()

使用each()

let arr = []
$(".productname").each((i, el) => arr.push($(el).text()))

其中的任何一个看起来对您来说都更好,我大致相同。