最近在做多图片上传,发现上传前后文件顺序不一致,那么如何让上传后的顺序跟上传前的顺序保持一致呢?经过调试发现上传前后文件各自以对象形式存放在数组中,所以自己想的解决方法就是将上传前后的数组以上传前的文件名为键值合并下,自己简单写了个函数实现了下合并对象数组的功能,感觉效率不是很高,暂时没想到更好的办法。。。
function mergeArrayByKey(...args) {
const key = args[0];
const map = {};
for(let i = 1; i < args.length; i+=1) {
for(let j = 0; j < args[i].length; j+=1) {
let currentEle = args[i][j];
let currentKey = currentEle[key]
if(!map[currentKey]) {
map[currentKey] = currentEle;
} else {
map[currentKey] = Object.assign(map[currentKey], currentEle);
}
}
}
return Object.values(map);
}
mergeArrayByKey(
'name',
[{'name':'01', a:1},{'name':'02', a:2}],
[{'name':'01', b:1},{'name':'03', b:2}]
);
// [{name: "01", a: 1, b: 1},{name: "02", a: 2},{name: "03", b: 2}]