产品要求:很多相同名字的文件一起上传的时候,给出警告,并且相同名字的文件只能留一个,所以需要先用哈希算法算出每个文件的哈希值,假设就是list 然后再将所有上传的文件(假设是zuizhong)里面的相同的文件删除
var list = ["123", "345", "542", "567", "890", "123", "345", "123", "409"];
//找出相同的元素和相同元素的位置
function getRepeat(arr) {
var rep = [];
arr.forEach((item, index) => {
if (arr.indexOf(item) != index) {
// 匹配item在数组中第一次出现的位置和当前位置
var obj = {};
if (rep.length > 0) {
var has = rep.findIndex((r) => {
return r.value == item;
});
if (has != -1) {
rep[has].key += "," + (index + 1);
} else {
obj.key = arr.indexOf(item) + 1 + "," + (index + 1); // 用','分隔两个重复项的下标
obj.value = item;
rep.push(obj);
}
} else {
obj.key = arr.indexOf(item) + 1 + "," + (index + 1); // 用','分隔两个重复项的下标
obj.value = item;
rep.push(obj);
}
}
});
return rep;
}
var hh = getRepeat(list);
var kong = [];
var o = hh.forEach((valuee, item) => {
var liu = valuee.key.slice(2);
kong.push(liu);
return kong;
});
//变成正常的数组
var haha = kong.join(",").split(",");
haha.sort((x, y) => x - y); // 正序
//去重 加入zuizhong里面的每个元素都是一个文件 并不能确定每个元素的内部的内容
var zuizhong = ["1", "2", "3", "4", "5", "6", "1", "2", "1", "10"];
if (haha.length !== 0) {
for (let i = haha.length - 1; i >= 0; i--) {
list.splice(haha[i] - 1, 1);
}
}
},
};