javascript - 交换对象数组中的元素

标签 javascript arrays object swap

<分区>

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

var tempObject = array.splice(index, 1, array[index + 1]);
array.splice(index+1, 1, tempObject);

但它似乎无法正常工作,因为它会导致一些奇怪的错误。例如,我无法使用对象的方法。调用 array[x].getName 会导致错误。

任何人都可以在这里伸出援助之手吗?

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

最佳答案

您代码中的错误是 splice 返回项目数组,而不是单个项目。由于您正在提取单个项目,因此您可以:

var tempObject = array.splice(index, 1, array[index + 1])[0]; // get the item from the array
array.splice(index+1, 1, tempObject);

This answer提供了一个较短的版本,也使用拼接:

array[index] = array.splice(index+1, 1, array[index])[0];

Another very interesting answer既短又fast :

function identity(x){return x};

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

关于javascript - 交换对象数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21229560/

相关文章:

javascript - 运行函数几次后未定义索引

javascript - 如何获取 JS 对象中的最后一个属性值

javascript - 两个数组包含在单个查询谷歌云Firestore中。应用过滤产品并在搜索内排序

javascript - 在 jquery 网格中隐藏页面导航器

Javascript 函数indexOf 返回不正确的结果

java - 对象序列化/反序列化和 FileInputStream.available()

javascript - 如何从对象内部获取属性名称以创建新的属性名称?

javascript - 数组排序适用于单个数字,但不适用于多个数字值

javascript - 如何在 ReactJS 中为 API 中的每个渲染元素显示函数返回的不同值?

java - 在java中创建十六进制字节数组