gpt4 book ai didi

javascript - 更改排序顺序时更新键值的最短方法是什么

转载 作者:行者123 更新时间:2023-12-03 05:26:49 24 4
gpt4 key购买 nike

我有一个对象数组,其键名为 order,如下所示:

[{id:"24fin1st",ruler:false,order:1},
{id:"24fin2nd",标尺:false,顺序:2},
{id:"24fin3rd",标尺:false,顺序:3},
{id:"24fin4th",ruler:false,order:4}]

假设我们将第四项移至第二项。或第 1 项到第 4 项。更新整个关键顺序列表的最有效方法是什么。我正在考虑获取从原点到目的地的整个数组,并重新编号该范围内的键,例如:

var switchUp = [{
id: "24fin1st",
ruler: false,
order: 1
}, {
id: "24fin2nd",
ruler: false,
order: 2
}, {
id: "24fin3rd",
ruler: false,
order: 3
}, {
id: "24fin4th",
ruler: false,
order: 4
}];

function sortNumber(a, b) {
return a - b;
}

function resort(org, des, arr) {
var move;
if (org > des) {
move = "up";
var range = arr.slice(des - 1, org)
} else {
move = "down";
var range = arr.slice(org - 1, des)
}
range.forEach(function(su, i) {
if (su.order === org) {
su.order = des;
} else {
if (move === "up") {
su.order = su.order + 1;
} else {
su.order = su.order - 1
}
}

})
}

resort(1, 3, switchUp);
switchUp.sort(function(a, b) {
return parseFloat(a.order) - parseFloat(b.order);
});
console.log(switchUp)

我认为这种方式还不错,但不确定它是否是最快的。

最佳答案

只需重新分配所有order 属性即可:

array.forEach((o, i) => o.order = i + 1)

关于javascript - 更改排序顺序时更新键值的最短方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com