如何判断多个相等的元素内容最后的一个,然后追加一个新的元素

我想用jq二次修改表格,更具多个相等的表格元素内容后面的下一行追加一个表格元素,因为表格是网站之前生成的没法直接修改修改源代码,只能加js二次修改,请问各位大佬有么有什么办法,谢谢了。图片.png图片.png

阅读 1.1k
1 个回答

大概意思就是用文本内容当成key,那么遍历完后最后保存的一定是相同内容里的最后一个,具体代码可以自己再看看了~

var $tds = $("table td");
var foundTd = {};
$tds.each(function(){
    var $td = $(this);
    var key = $td.children("span:first").text();
    foundTd[key] = $td;
});
var $foundTds = $([]);
for(var key in foundTd){
  $foundTds = $foundTds.add(foundTd[key]);
}
$foundTds.after("<td>插入行</td>");

继续回复后面的问题,如果是直接在数据里插入,则可以试着从后往前找,更高效方便,插入数据的时候也从后往前插,这样不会影响插入的索引值,大概代码:

let data = [{
  date: '2021-05-02',
  name: '王小虎',
  address: '上海市普陀区金沙江路 1518 弄'
}, {
  date: '2021-06-04',
  name: '王小虎',
  address: '上海市普陀区金沙江路 1517 弄'
}, {
  date: '2021-07-01',
  name: '王大虎',
  address: '上海市普陀区金沙江路 1519 弄'
}, {
  date: '2021-08-03',
  name: '王大虎',
  address: '上海市普陀区金沙江路 1516 弄'
}, {
  date: '2021-09-03',
  name: '王大虎',
  address: '上海市普陀区金沙江路 1516 弄'
}];
let lastIndex = data.length;
const founded = [];
const nameHashs = {};
while(--lastIndex >= 0){
    const item = data[lastIndex];
    const { name } = item;
    if(!Object.prototype.hasOwnProperty.call(nameHashs, name)){
       founded.push({index: lastIndex+1, item});
       nameHashs[name] = true;
    }
}
founded.forEach(({index, item}) => {
    data.splice(index, 0, {
        ...item,
        name: `拷贝-${item.name}`
    });
});
console.log(data);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题