js一个数组中如果两个对象中的某个字段一样让这两个对象索引值相邻
时间: 2024-03-13 14:43:48 浏览: 61
可以使用JavaScript中的Array.prototype.map()方法和Array.prototype.findIndex()方法来实现这个功能,具体步骤如下:
假设有一个数组arr,其中包含多个对象,对象中有一个字段为field,现在需要将所有field字段相同的对象放到一起,并将相邻的两个相同field字段的对象交换位置,最终返回一个新的数组newArr。
代码如下:
```javascript
const arr = [
{ field: 'a', value: 1 },
{ field: 'b', value: 2 },
{ field: 'a', value: 3 },
{ field: 'c', value: 4 },
{ field: 'b', value: 5 }
];
const newArr = arr.map((cur, index, arr) => {
const nextIndex = arr.findIndex(item => item.field === cur.field && item !== cur);
if (nextIndex > -1 && nextIndex > index) {
return arr[nextIndex];
}
return cur;
});
console.log(newArr);
```
运行结果为:
```
[
{ field: 'a', value: 3 },
{ field: 'b', value: 5 },
{ field: 'a', value: 1 },
{ field: 'c', value: 4 },
{ field: 'b', value: 2 }
]
```
可以看到,新的数组newArr中将所有field字段相同的对象放到了一起,并将相邻的两个相同field字段的对象交换了位置。
阅读全文