matrices de JavaScript varias formas de re-comunes

Fui entrevistado recientemente una serie de volver a hacer un dolor de cabeza, ahora específicamente para decir que todo el mundo utilizan varios métodos:

En primer lugar, el uso ES6 Conjunto de deduplicación (ES6 más comúnmente utilizado)

función única (arr) {
   regreso Array.from ( nuevo Set (arr)) 
} 
var arr = [1,1, 'verdadero', 'verdadero', verdadero , verdadero , 15,15, falso , falso , sin definir, no definida, nulo , nulo , NaN, NaN, 'NaN', 0, 0, 'a', 'a' , {}, {}]; 
console.log (único (arr)) 
 // [1, "verdadero", true, 15, falso, sin definir, null, NaN, "NaN", 0, "a", {}, {}]

No tienen en cuenta la compatibilidad de este código método para el peso mínimo.

En segundo lugar, para su uso para la anidación y, a continuación, a re-empalme (utilizado más comúnmente en la ES5)

función UNIQUE (ARR) {            
         para ( var i = 0; I <arr.Length; I ++ ) {
             para ( var J = I + 1;. J <arr.Length; J ++ ) {
                 IF (ARR [I] == ARR [ J]) {          // primera equivalente a un segundo, de empalme borrar el segundo método 
                    arr.splice (J ,. 1 ); 
                    J - ; 
                } 
            } 
        } 
retorno ARR; 
} 
var ARR = [1,1, ' true '' true', true , true , 15, 15, false , false, Indefinido, sin definir, nulo , nulo , NaN3, NaN3, 'NaN3', 0, 0, 'A', 'A' , {}, {}]; 
    la console.log (UNIQUE (ARR)) 
    // . [1, "verdadero", 15, falsa, sin definir, NaN, NaN, "NaN", "una", {...}, {...}] // NaN {} y no pesada, dos nula desaparecen directamente

bucle doble, el elemento de bucle exterior, el bucle interior cuando el valor de comparación. Los valores son los mismos, se omite este valor.

En tercer lugar, el uso incluye (ES6 Método)

función única (arr) {
     si (! Array.isArray (arr)) { 
        console.log ( 'error de tipo!' )
         de retorno 
    } 
    var array = [];
    para ( var i = 0; i <arr.Length; i ++ ) {
             si (! array.includes (arr [i])) { // incluye检测数组是否有某个值
                     Array.push (arr [i]); 
              } 
    } 
    Retorno array 
} 
var arr = [1,1, 'verdadero', 'verdadero', verdadero , verdadero , 15,15, falso , falso, Sin definir, sin definir, nulo , nulo , NaN, NaN, 'NaN', 0, 0, 'a', 'a' , {}, {}]; 
    console.log (único (arr)) 
    // [1, "verdadero", true, 15, falso, sin definir, null, NaN, "NaN", 0, "a", {...}, {...}] // {}没有去重

En cuarto lugar, el uso sort ()

función (arr) {única
     si (! Array.isArray (arr)) { 
        console.log ( '! error de tipo' )
         de retorno ; 
    } 
    Arr = arr.sort ()
     var arrry = [arr [0 ]];
    para ( var i = 1; i <arr.Length; i ++ ) {
         si (arr [i] == arr [i-1! ]) { 
            arrry.push (arr [i]); 
        } 
    } 
    Volver arrry; 
} 
     Var arr = [1,1, 'verdadero', 'verdadero', verdadero , verdadero , 15,15, falso ,falso , sin definir, sin definir, nulo , nulo , NaN, NaN, 'NaN', 0, 0, 'a', 'a' , {}, {}]; 
        console.log (único (arr)) 
// [0, 1, 15, "NaN", NaN, NaN, {...}, {...}, "a", false, null, cierto, "verdadero", sin definir] // NaN, {}没有去重

Utilizando el método sort () la clasificación, y después de atravesar la relación de elemento de acuerdo con un resultado de adyacente ordenada.

 

En quinto lugar, el uso de filtro

función UNIQUE (ARR) {
   retorno arr.filter ( función (Tema, índice, ARR) {
     // el elemento actual, el primer índice en la matriz original == valor índice actual, de lo contrario el elemento actual 
    retorno arr.indexOf (Tema , 0) === índice; 
  }); 
} 
    var ARR = [1,1, 'true', 'true', true , true , 15, 15, a falso , a falso , sin definir, sin definir, nulo , nulo , NaN3, NaN3, 'NaN3', 0, 0, 'a', 'a' , {}, {}]; 
        la console.log (UNIQUE (ARR)) 
// . [1, "true", true, 15, false, indefinido , null, "NaN", 0 , "a", {...}, {...}]

 

Supongo que te gusta

Origin www.cnblogs.com/Ky-Thompson23/p/12631788.html
Recomendado
Clasificación