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:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user