Javascript 数组和/或HTMLCollections的insertBefore函数?

Javascript 数组和/或HTMLCollections的insertBefore函数?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,在vanillaJavaScript或jQuery中是否存在类似于Node.insertBefore(),但用于数组和/或HTMLCollections的函数 例如: var list = document.getElementsByClassName("stuff"); var nodeToMove = list[0]; var otherNode = list[4]; list.insertBefore(nodeToMove, otherNode); 基本上,我正在尝试执行insertBe

在vanilla
JavaScript
jQuery
中是否存在类似于
Node.insertBefore()
,但用于数组和/或HTMLCollections的函数

例如:

var list = document.getElementsByClassName("stuff");
var nodeToMove = list[0];
var otherNode = list[4];
list.insertBefore(nodeToMove, otherNode);
基本上,我正在尝试执行
insertBefore()
,而不操纵实际的DOM,因为我希望更改只在特定条件下应用于DOM。如果满足这些条件,那么我将在实际节点上执行
insertBefore()


为了澄清这一点,我正在寻找一个函数,该函数将在数组中给定索引处的目标元素之前插入一个元素,而不一定在给定索引处。我所看到的使用
splice()
的示例通常在给定索引处插入一个元素,有时将元素放在目标元素之前,有时放在目标元素之后,这取决于要移动的元素最初在数组中的位置。我正在寻找能够可靠地将要移动的元素放在目标元素之前的东西。

HTMLCollection
没有
insertBefore
方法。jQuery可以将任何jQuery方法应用于所选的单个元素,也可以应用于多个元素


没有一种方法可以一步完成,但不需要。如果将集合转换为数组,则可以调用该方法以获得相同的结果

下面是一个例子:

let ari=[1,2,3,4,5];
//互换2和3
//从第三项开始,删除一项(3)。
//存储删除的项目
let removed=三元拼接(2,1);
//从第二项开始,不要删除任何内容,插入已删除的
//该位置的项目
三元拼接(1,空,删除[0]);
//记录结果

控制台日志(ary)您需要获得所需的索引,然后使用Array.splice

我自己也会这样做:

const myArr = ['Aurore', 'Dimitri', 'Alban', 'Frédéric'];
const insertBeforeThis = 'Alban';
const eltToInsert = 'Laura';
const index = myArr.findIndex(name => name === insertBeforeThis);

myArr.splice(index, 0, eltToInsert);
请随时在浏览器控制台中试用。注意,我在数组中使用了const,因为它将变量的类型固定为数组,但允许我操作它


祝你玩得开心

谢谢你的回复。我遇到的问题是,我正在寻找一个函数,该函数将在具有目标索引的元素之前插入一个元素,而我看到的这个和类似的解决方案是使用splice()在给定的目标索引处插入一个元素。使用第一个示例,我正在移动的元素是否在具有给定目标索引的元素之前或之后结束,取决于两个元素在移动之前的相对位置。从这个意义上说,我正在寻找一种与insertBefore()操作更相似的方法。