【发布时间】:2021-01-27 03:41:13
【问题描述】:
我经常需要遍历网页中的元素,获取一些属性,然后将它们发送到服务器。
我在每个 div 中有一个由 user_id 组成的列表:
<div class="user-box" user_id="1">
//stuff
</div>
<div class="user-box" user_id="2">
//stuff
</div>
<div class="user-box" user_id="3">
//stuff
</div>
<div class="user-box" user_id="4">
//stuff
</div>
使用 jQuery:
let ids = "";
$(".user-box").each(function(){
ids+= $(this).attr("user_id")+"|"
})
ids 变量看起来像这样“1|2|3|4|”
我尝试像这样使用 map/reduce:
function doStuff(selector, attribute,separator) {
let mySring = Array.from(
document.querySelectorAll(selector)).map(
x => x.getAttribute(attribute)).reduce(
(acc, cv) => acc + separator + cv);
return myString
}
let x = doStuff(".user-box","user_id","|");
我得到相同的结果。
如何使用 javascript 而不是 jQuery 来做到这一点?
【问题讨论】:
-
reduce 得到我的投票:至少在您的示例中,您正在获取一个数组并产生一个值(最终)。
-
主要问题似乎是您的数据模型和视图是混合的,因此您必须一直从 DOM 中提取状态。
标签: javascript jquery arrays performance mapreduce