javascript - 如何将所有数组项重新排序到 React 中的特定索引?
问题描述
我的用户能够重新排序类别列表,并且我需要保留数组项的索引,以便即使用户关闭应用程序也能保持顺序。
我已经尝试过了,但它不起作用,因为映射时数据会发生变化。我只是无法理解我的逻辑,如何实现这一点。
下面是示例数据,以及我尝试过的逻辑:
order: [
{id: "5", index: 0},
{id: "4", index: 1},
{id: "1", index: 2},
{id: "2", index: 3},
{id: "3", index: 4},
]
data: [
{id: "1", category: "Category1"},
{id: "2", category: "Category2"},
{id: "3", category: "Category3"},
{id: "4", category: "Category4"},
{id: "5", category: "Category5"},
]
orderCategories = (data, order) => {
data.map((dataValue, dataIndex) => {
order.map((value, index) => {
if (dataValue.id === value.id && dataIndex !== index) {
this.setState({data: arrayMove(data, dataIndex, index)})
}
});
});
};
下面是生成的数据数组:
data: [
{id: "5", category: "Category5"},
{id: "1", category: "Category1"},
{id: "2", category: "Category2"},
{id: "3", category: "Category3"},
{id: "4", category: "Category4"},
]
但我希望它是:
data: [
{id: "5", category: "Category5"},
{id: "4", category: "Category4"},
{id: "1", category: "Category1"},
{id: "2", category: "Category2"},
{id: "3", category: "Category3"},
]
我在这里做错了什么?
解决方案
你可以这样做:
orderCategories = (data, order) => {
order.forEach(order => {
result[order.index] = data.find(data => data.id === order.id)
}
return result;
)}
推荐阅读
- html - 输入字段中的占位符只显示给我,不显示给其他人
- reactjs - 在所需位置显示 recharts xaxis 刻度的问题
- flutter - WidgetSpan 访问父 TextSpan fontSize
- python - 无法创建文件错误,文件不存在
- mysql - SQL - 如何从过去 5 年中选择日期以包括最早年份的 1 月 1 日
- javascript - 带有自定义字体系列的 Syncfusion JavaScript (ES5) 导出图表
- for-loop - 是否可以在 Kotlin 中编写一个 for 循环,在其中我可以在迭代期间将索引更改为我想要的任何值?
- oracle - “ORA-00925:缺少 INTO 关键字”与 sqlalchemy
- rust - 定义表示不透明 C 结构的 Rust 类型的交叉编译安全方法,其大小在编译时已知
- python - 如何使用列表中的数据在 Kivy 的滚动视图中添加一行?Python