Javascript 交换对象数组中的元素

Javascript 交换对象数组中的元素,javascript,arrays,object,swap,Javascript,Arrays,Object,Swap,我有一个对象数组,我想交换数组中两个元素的位置。 我试过这个: var tempObject = array.splice(index, 1, array[index + 1]); array.splice(index+1, 1, tempObject); 但它似乎不能正常工作,因为它会导致一些奇怪的错误。例如,我无法使用对象的方法。调用数组[x].getName会导致错误 这里有人能帮忙吗 为了以防万一,我使用了object.prototype来添加方法。 或者您可以将函数添加到数组中。pr

我有一个对象数组,我想交换数组中两个元素的位置。 我试过这个:

var tempObject = array.splice(index, 1, array[index + 1]);
array.splice(index+1, 1, tempObject);
但它似乎不能正常工作,因为它会导致一些奇怪的错误。例如,我无法使用对象的方法。调用数组[x].getName会导致错误

这里有人能帮忙吗

为了以防万一,我使用了
object.prototype
来添加方法。

或者您可以将函数添加到
数组中。prototype

或者您可以将函数添加到
数组中。prototype


代码中的错误是splice返回一个项目数组,而不是单个项目。由于要提取单个项目,因此可以执行以下操作:

var tempObject = array.splice(index, 1, array[index + 1])[0]; // get the item from the array
array.splice(index+1, 1, tempObject);
提供了较短的版本,也使用了拼接:

array[index] = array.splice(index+1, 1, array[index])[0];
既短又短:


代码中的错误是splice返回一个项目数组,而不是单个项目。由于要提取单个项目,因此可以执行以下操作:

var tempObject = array.splice(index, 1, array[index + 1])[0]; // get the item from the array
array.splice(index+1, 1, tempObject);
提供了较短的版本,也使用了拼接:

array[index] = array.splice(index+1, 1, array[index])[0];
既短又短:


-使用splice比临时变量慢得多。非常感谢!工作得很好使用splice比临时变量慢得多。非常感谢!工作得很好!
function identity(x){return x};

array[index] = identity(array[index+1], array[index+1]=array[index]);