Use JS native methods for array manipulations

* In mw.uls.addPreviousLanguage, jQuery.map was used for what is
essentially filtering, not mapping. Filtering was used to remove
one element from array. Use Array.prototype.splice instead.
* In mw.uls.getFrequentLanguageList, replace:
- jQuery.each with Array.prototype.forEach
- jQuery.inArray with Array.prototype.indexOf
- jQuery.grep with Array.prototype.filter

Change-Id: Id2208b3c89e982f91f49981d18e588ae8ce3b130
This commit is contained in:
petarpetkovic
2018-08-24 20:07:49 +02:00
parent cd32adcb37
commit 6ce67b8dda

View File

@@ -107,13 +107,15 @@
* @since 2016.05 * @since 2016.05
*/ */
mw.uls.addPreviousLanguage = function ( language ) { mw.uls.addPreviousLanguage = function ( language ) {
var languages = mw.uls.getPreviousLanguages(); var languages = mw.uls.getPreviousLanguages(),
index = languages.indexOf( language );
// Avoid duplicates // Avoid duplicates
languages = $.map( languages, function ( element ) { if ( index !== -1 ) {
return element === language ? undefined : element; languages.splice( index, 1 );
} ); }
languages.unshift( language ); languages.unshift( language );
mw.uls.setPreviousLanguages( languages ); mw.uls.setPreviousLanguages( languages );
}; };
@@ -167,21 +169,17 @@
list = list.concat( $.uls.data.getLanguagesInTerritory( countryCode ) ); list = list.concat( $.uls.data.getLanguagesInTerritory( countryCode ) );
} }
$.each( list, function ( i, v ) { list.forEach( function ( lang ) {
if ( $.inArray( v, unique ) === -1 ) { if ( unique.indexOf( lang ) === -1 ) {
unique.push( v ); unique.push( lang );
} }
} ); } );
// Filter out unknown and unsupported languages // Filter out unknown and unsupported languages
unique = $.grep( unique, function ( langCode ) { unique = unique.filter( function ( langCode ) {
// If the language is already known and defined, just use it. // If the language is already known and defined, just use it.
// $.uls.data.getAutonym will resolve redirects if any. // $.uls.data.getAutonym will resolve redirects if any.
if ( $.uls.data.getAutonym( langCode ) !== langCode ) { return $.uls.data.getAutonym( langCode ) !== langCode;
return true;
}
return false;
} ); } );
return unique; return unique;