- var arr = [2, 3, 5, 6, 1, 1, 1, 5, 3, 8, 3, 4, 23, 42, 9, 88, 44];
- //第一种 删除后面重复元素
- function removeRepeat1(a) {
- for (var i = 0; i < a.length; i++) {
- for (var j = i + 1; j < a.length; j++) {
- if (a[i] === a[j]) {
- a.splice(j, 1);
- j--; //否则若是多个一样的数字连在一起则只能去掉一个
- }
- }
- }
- return a.sort(function(a, b) {
- return a - b
- });
- }
- console.log(removeRepeat1(arr));
- // 第二种 相互比较元素,碰到相同的则跳出循环
- function removeRepeat2(a) {
- var b = [],
- n = a.length,
- i,
- j;
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[i] === a[j]) {
- j = false;
- break;
- }
- }
- if (j) b.push(a[i]);
- }
- return b.sort(function(a, b) {
- return a - b
- });
- }
- console.log(removeRepeat2(arr));
- // 第三种 j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环
- function removeRepeat3(a) {
- var b = [],
- n = a.length,
- i,
- j;
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[i] === a[j]) {
- j = ++i;
- }
- }
- b.push(a[i]);
- }
- return b.sort(function(a, b) {
- return a - b
- });
- }
- console.log(removeRepeat3(arr));
- // 第四种 保证新数组中元素唯一
- function removeRepeat4(a) {
- var m = [],
- f;
- for (var i = 0; i < a.length; i++) {
- f = true;
- for (var j = 0; j < m.length; j++) {
- if (a[i] === m[j]) {
- f = false;
- break;
- }
- }
- if (f) {
- m.push(a[i]);
- }
- }
- return m.sort(function(a, b) {
- return a - b
- });
- }
- console.log(removeRepeat4(arr));
- // 第五种 用对象属性
- function removeRepeat5(ar) {
- var m, n = [],
- o = {};
- for (var i = 0; (m = ar[i]) !== undefined; i++) if (!o[m]) {
- n.push(m);
- o[m] = true;
- }
- return n.sort(function(a, b) {
- return a - b
- });
- }
- console.log(removeRepeat5(arr));
来源: http://www.w3cfuns.com/notes/37763/4b71cf86145ca59133dd0324646354c6.html