汇合数组转换法

/** * * @param {Array} data * * 思路 * 1.将数组转成Set汇合对象 * 2.而后将汇合对象转成数组 */const unique = (data) => {  return Array.from(new Set(data));};

查找尾部替换法

/** * * @param {Array} data * * 思路: * 1.查找每一项是否呈现在前面的所有项中 * 2.如果存在,将以后项替换为数组最初一项 * 3.同时将数组长度减一 * 4.再用以后替换过去的项,与前面的所有项比拟,反复步骤一 */const unique = (data) => {  for (let i = 0; i < data.length - 1; i++) {    if (data.slice(i + 1).indexOf(data[i]) > -1) {      data[i] = data[data.length - 1];      data.length--;      i--;    }  }  return data;};

清空过滤法

/** * * @param {Array} data * * 思路: * 1.查找每一项是否呈现在前面的所有项中 * 2.如果存在,将以后项替换为null * 3.过滤掉所有为null的项 */const unique = (data) => {  for (let i = 0; i < data.length - 1; i++) {    if (data.slice(i + 1).indexOf(data[i]) > -1) {      data[i] = null;    }  }  return data.filter((v) => v !== null);};

查找删除法

/** * * @param {Array} data * * 思路: * 1.查找每一项是否呈现在前面的所有项中 * 2.如果存在,将以后项用splice去除 * 3.防止数组塌陷,所以要在下一次循环时将数组下表变为以后下表,即i-- */const unique = (data) => {  for (let i = 0; i < data.length - 1; i++) {    if (data.slice(i + 1).indexOf(data[i]) > -1) {      data.splice(i, 1);      i--;    }  }  return data.filter((v) => v !== null);};

对象个性去重法

/** * * @param {Array} data * * 思路: * 1.对象的键名不容许反复 * 2.将数组遍历,把每一项当做键名和键值 * 3.拿出对象的keys或者values */const unique = (data) => {  const obj = {};  for (let i = 0; i < data.length - 1; i++) {    obj[data[i]] = data[i];  }  return Object.values(obj);};