如何比较差异和复制选择部分的数组对象?
我有两个html列表。
<ul id="listOne">
<li data-info="a" data-infoTwo="x">One</li>
<li data-info="b" data-infoTwo="y">Two</li>
<li data-info="c" data-infoTwo="z">Three</li>
</ul>
<ul id="listTwo">
<li data-info="a">One</li>
<li data-info="b">Two</li>
<li data-info="d">Four</li>
</ul>
我将列表作为对象推送到数组中。
var listOneArray = [];
var listTwoArray = [];
$('#listOne li').each(function () {
listOneArray.push(this);
});
$('#listTwo li').each(function () {
listTwoArray.push(this);
});
如果对象data-info在两个数组中匹配,我想比较数组。
如果data-info与每个数组的每个对象匹配。我想将data-infoTwo对象信息从一个对象复制到另一个对象。
所以当我将数组推回到listTwo时,它看起来就像这样。
<ul id="listTwo">
<li data-info="a" data-infoTwo="x">One</li>
<li data-info="b" data-infoTwo="y">Two</li>
<li data-info="d">Four</li>
</ul>
答案 0 :(得分:4)
你可以这样做:
$('#listOne li').each(function () {
$("#listTwo li[data-info=" + $(this).data("info") + "]").data("infoTwo", $(this).data("infoTwo"));
});
答案 1 :(得分:2)
由于你没有在评论中回答我的问题,我认为你可以使用选择器来做,所以我们走了:
$('#listOne li').each(function(){
var listOne=$(this);
$('#listTwo li').each(function(){
if(listOne.data('info')==$(this).data('info')){
$(this).data('infoTwo',listOne.data('infoTwo'));
}
});
});
答案 2 :(得分:0)
为什么不迭代你需要复制的元素并从第二个数组中获取目标元素,而不是试图比较你的两个列表?
$('#listOne li[data-infoTwo]').each(function(){
var info = $(this).data('info'),
infoTwo = $(this).data('infoTwo');
$('#listTwo li[data-info="' + info + '"]').data('infoTwo', infoTwo);
});