gpt4 book ai didi

javascript - 覆盖排序索引

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

从后端,我使用排序索引(1 到 999 之间的随机数)和项目列表数组获取项目对象,其中项目的 id 按其索引排序,例如:

{
items: {
1: {
sort: 131,
name: 'Item 1'
},
2: {
sort: 22,
name: 'Item 2'
},
3: {
sort: 440,
name: 'Item 3'
},
4: {
sort: 80,
name: 'Item 4'
}
},
itemList: [2, 4, 1, 3]
}

使用 UI 用户可以更改 itemList 数组中反射(reflect)的元素的顺序。单击用户界面中的“保存”按钮后,我需要正确地重新分配现有排序索引,并仅将索引已更改的元素发送到后端。例如,如果用户将 item 2 设置为第二个位置 itemsList 将为 [4, 2, 1, 3],发送到后端的数据应为:

{
2: {
sort: 80
},
4: {
sort: 22
}
}

如果用户将item 2设置为第四个位置,则itemList将为[4, 1, 3, 2],发送到后端的数据应为:

{
1: {
sort: 80
},
2: {
sort: 440
},
3: {
sort: 131
},
4: {
sort: 22
}
}

如何实现该功能?

最佳答案

这是实现它的方法

var getUpdatedItems = (function() { 

var items = {
1: {
sort: 131,
name: 'Item 1'
},
2: {
sort: 22,
name: 'Item 2'
},
3: {
sort: 440,
name: 'Item 3'
},
4: {
sort: 80,
name: 'Item 4'
}
},
itemsList = [];

function _getUpdatedItems(newItemsList) {
itemsList = Object.entries(items).sort(([,a], [,b]) => a.sort - b.sort).map(([data]) => data);

var dataToSend = {};
newItemsList.forEach((key, index) => key != itemsList[index] && (dataToSend[key] = { sort: items[itemsList[index]].sort }))

console.log(dataToSend)
}

return _getUpdatedItems;

})()

// you can test with below test and you will get expected result
getUpdatedItems([4,2,1,3])

getUpdatedItems([4,1,3,2])

关于javascript - 覆盖排序索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346344/

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