vue 数组对比调整顺序
如何根据 arr1 中 uid 字段对 arr2 中的对象进行重新排序,使 arr2 中的对象与 arr1 中对象的 uid 保持一致?
问题示例:
已有 arr1 和 arr2 两组数据:
基于“创意扇形排列卡片画廊”制作的前端特效源码,包含扇形卡片、旋转展开、层级聚焦、键盘切换,打开 index.html 即可直接查看效果,可替换标题、颜色和图形元素复用。 下载包已经整理好特效舞台、样式变量、动画规则和必要脚本,适合用于学习当前效果的实现方式,也方便替换文字、颜色、图形或图片后直接复用。
let arr1 = [
{
uid: 1638867875084,
},
{
uid: 1638867869536,
},
{
uid: 1638867872121,
},
{
uid: 1638867882077,
},
];
let arr2 = [
{ uid: 1638867869536, name: 'orange.png' },
{ uid: 1638867872121, name: 'pro_map.gif' },
{ uid: 1638867875084, name: 'avatar-3.png' },
{ uid: 1638867882077, name: 'qcode.jpg' },
];
期望结果:
let arr2 = [
{ uid: 1638867875084, name: 'avatar-3.png' },
{ uid: 1638867869536, name: 'orange.png' },
{ uid: 1638867872121, name: 'pro_map.gif' },
{ uid: 1638867882077, name: 'qcode.jpg' },
];
解决方案:
arr1.map(item => arr2.find(item2 => item.uid === item2.uid)).filter(Boolean)
此代码片段通过 map 函数遍历 arr1,并为每个 arr1 中的对象寻找 arr2 中 uid 相等的对应对象。找到后,将对应对象放到一个新的数组中。最后,利用 filter(Boolean) 去除 null 值,得到符合要求的重新排序后的 arr2。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









