|
Rédacteur
 Daniel Hagnoul Étudiant perpétuel Inscription : février 2009 Messages : 3 896 Détails du profil  Informations personnelles : Nom :  Daniel Hagnoul Âge : 62 Localisation : Belgique Informations professionnelles :
Activité : Étudiant perpétuel Secteur : Enseignement Informations forums :
Inscription : février 2009 Messages : 3 896 Points : 15 052 Points : 15 052
|
[jQuery] containsArray( array, arrayOfArrays )
Détecte si l'un des array d'un array d'array contient le contenu (l'ordre des éléments étant respecté) d'un autre array. Le contenu des arrays peut être alphanumérique.
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| /*
* SPaceFrog
* [RegExp]remplacement / suppression de caractères accentués ou autres ...
* "http://www.developpez.net/forums/d1018129/webmasters-developpement-web/\
contribuez/regexp-remplacement-suppression-caracteres-accentues-autres/"
*/
function replaceSpec(Texte){
var TabSpec = {"à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","è":"e","é":"e","ê":"e","ë":"e","ç":"c","ì":"i","í":"i","î":"i","ï":"i","ù":"u","ú":"u","û":"u","ü":"u","ÿ":"y","ñ":"n","-":" ","_":" "},
reg=/[àáâãäåòóôõöøèéêëçìíîïùúûüÿñ_-]/gi;
return Texte.replace(reg, function(){
return TabSpec[arguments[0].toLowerCase()];
}).toLowerCase();
}
/*
* Tri alphanumérique
*
* 0 : égal
* 1 : supérieur
* 2 : inférieur
*/
var sort = function( a, b ){
var x = parseInt( a, 10 ),
y = parseInt( b, 10 ),
c1 = replaceSpec( String( a ) ),
c2 = replaceSpec( String( b ) );
if ( isNaN( x ) || isNaN( y ) ){
if ( c1 > c2 ){
return 1;
} else if( c1 < c2 ){
return -1;
} else {
return 0;
}
} else {
return( x - y );
}
};
/*
* containsArray( array, arrayOfArrays )
*
* Détecte si l'un des array d'un array d'array contient
* le contenu (l'ordre des éléments étant respecté)
* d'un autre array.
*
* Le contenu des arrays peut être alphanumérique.
*
* Daniel Hagnoul
*
* Code v1.0.0 2013-01-19
*
* Retourne un array contenant quatre éléments :
* [ true, i, n, m ] avec :
* i = l'index de l'array qui contient l'array recherché,
* n = le début de l'array recherché dans i,
* m = la fin de l'array recherché dans i.
*
* En cas d'échec : [ false, -1, -1, -1 ].
*/
function containsArray( array, arrayOfArrays ){
var tabBool = [],
n = 0,
bool = false,
arrayLength = array.length,
result = [ false, -1, -1, -1 ];
$.each( arrayOfArrays, function( i, item ){
$.each( item, function( j, jtem ){
bool = ( sort( jtem, array[ j - n ] ) == 0 );
// debug
//console.log( i, j, n, item, array, jtem, array[ j - n ] );
if ( ! bool ){
n = j;
tabBool = [];
bool = ( sort( jtem, array[ j - n ] ) == 0 );
// debug
//console.log( i, j, n, item, array, jtem, array[ j - n ] );
if ( ! bool ){
n = j+1;
tabBool = [];
}
}
if ( bool ){
tabBool.push( bool );
}
if ( tabBool.length == arrayLength ){
return false; // pour sortir du each !
}
});
if ( ( tabBool.length == array.length ) && ( $.inArray( false, tabBool ) == -1 ) ){
result = [ true, i, n, n + arrayLength - 1 ];
return false; // pour sortir du each !
}
n = 0;
tabBool = [];
});
return result;
} |
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var combinaisons = [
[ 250, "échangeur", 9, "bonjour", "25", "échangeur", "bonjour", 25, "échangiste", "9" ],
[ "9", 9, 5, "3", 6, "1", 5, 3, 7, 8, 9, "3", 4, 6, "2", 1, "9", 8, 5, 8, 9, 6, 1, "2" ],
[ 2, "25", 3, 25, "25", 5, 60, "25", 200, 60, "25" ],
[1,1,1,1,0,0,1,1,1,1],
[1,1,1,1,1,0],
[1,1,1,1,0,1,1,1,0,1,1,0],
[1,1,0,1,1,0],
[1,1,0,1,0,1]
],
saisiecomb1 = [ 3, "7" , 8 ],
saisiecomb2 = [ "échangeur", "9", "bonjour" ],
saisiecomb3 = [ 60, 25, 200 ],
saisiecomb4 = [1,1,1,1,0,1],
saisiecomb5 = [1,1,0,"1",1,"1"];
console.log( containsArray( saisiecomb1, combinaisons ) );
console.log( containsArray( saisiecomb2, combinaisons ) );
console.log( containsArray( saisiecomb3, combinaisons ) );
console.log( containsArray( saisiecomb4, combinaisons ) );
console.log( containsArray( saisiecomb5, combinaisons ) ); |
|