工作中遇到一个需求:将从后端获取到的数据列表按指定的顺序渲染,指定的顺序也是从后端返回的:
const sortArr = [4, 6, 5, 1, 3, 2]; // 指定的id排列顺序,后端返回
const backendData = [{id: 1},{id: 2},{id: 3},{id: 4},{id: 5},{id: 6}]; // 后端返回的列表数据
// 期望结果 [{id:4},{id:6},{id:5},{id:1},{id:3},{id:2}];
洒家解决思路就是创建一个新数组,然后使用双循环遍历,把符合条件的item对象push进新数组里,代码如下:
const sortArr = [4, 6, 5, 1, 3, 2]; // 指定的id排列顺序,后端返回
const backendData = [{id: 1},{id: 2},{id: 3},{id: 4},{id: 5},{id: 6}]; // 后端返回的列表数据
// 期望结果 [{id:4},{id:6},{id:5},{id:1},{id:3},{id:2}];
let newArr = [];
sortArr.map((num) => {
backendData.map((item) => {
if (item.id === num) {
newArr.push(item);
}
});
});
console.log(newArr, "newArr");
希望这篇文章对你有帮助。如果你有更高效的解法,欢迎你在评论区留言讨论。