如何在数组末尾添加对象的副本

How to add a copy of an Object at the end of an Array?

本文关键字:添加 对象 副本 数组      更新时间:2023-09-26

如何在数组末尾添加第一个标签的副本,因为据我所知,push() 在这种情况下无法使用......

<p>A</p>
<p>B</p>
<p>C</p>
<script>
var pArray=document.getElementsByTagName("p");
//now I would like to add pArray[0]
</script>

pArray实际上不是一个数组。这是一个NodeList.要将其转换为数组,只需调用 Array.prototype.slice

var pArray = Array.prototype.slice.call(document.getElementsByTagName("p"));

jsFiddle Demo

推送不可用,因为 pArray 实际上是一个 NodeListMDN。但是,您可以在不使用数组方法推送的情况下添加到它,只需分配给最后一个索引即可。cloneNodeMDN将为您复制第一个元素。

pArray[pArray.length] = pArray[0].cloneNode();

如果你想实际将第一个<p>标签的副本添加到 DOM(而不仅仅是修改数组),你需要克隆节点并将其插入到最后一个节点之后:

var els = document.getElementsByTagName('p');
var copy = els[0].cloneNode(true);
var last = els[els.length - 1];
last.parentNode.insertBefore(copy, last.nextSibling);