我有一个具有position属性的对象数组以及其他属性,如:
[{position: 1, ...otherProperties}, ...otherObjects]
在前端,对象按其位置显示和排序。
我正在寻找JavaScript函数来执行以下操作:
- 在指定位置插入一个新对象(例如,在position: 1的元素之前),并相应地更新其他元素的位置(例如,先前的position: 1元素现在将是position: 2)。
- 从指定位置删除对象,并相应地更新剩余元素的位置。
我正在努力创建这些函数
您可以创建两个函数addElement
和removeElement
来添加或删除数组中的元素,同时确保位置正确排序。例如:
function addElement(arr, newPosition, newElement) {
// Add a new element at the given position
newElement.position = newPosition;
arr.push(newElement);
// Sort the array by position
arr.sort((a, b) => a.position - b.position);
// Update the position of elements
arr.forEach((item, index) => {
item.position = index + 1;
});
return arr;
}
function removeElement(arr, positionToRemove) {
// Remove the element from the given position
arr = arr.filter(item => item.position !== positionToRemove);
// Update the remaining elements' positions
arr.forEach((item, index) => {
item.position = index + 1;
});
return arr;
}
用法:
let array = [
{ position: 1, prop: "a" },
{ position: 2, prop: "b" },
{ position: 3, prop: "c" },
];
let newArray = addElement(array, 1, { prop: "d" });
console.log(newArray);
newArray = removeElement(newArray, 3);
console.log(newArray);
您需要一个方法来解析数组中的所有项,并将新位置设置为所有项。
function fixPosition(arr) {
arr.map((o, i) => o.pos = i+1)
return arr
}