Как сопоставить массив с функцией верхнего регистра в javascript?

Мне интересно, есть ли какая-либо функция, например array_map или array_walk, из php.

Не нужно, чтобы для этого был перемещен весь массив. Я могу сделать это для себя.

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
// i would like something like this if exists - function(array, 'upperCase');

Ответы

Ответ 1

Вы можете использовать $. map(), чтобы применить String.toUpperCase() (или String.toLocaleUpperCase(), если это необходимо) к вашим элементам массива:

var upperCasedArray = $.map(array, String.toUpperCase);

Обратите внимание, что $.map() создает новый массив. Если вы хотите изменить существующий массив на месте, вы можете использовать $. Each() с анонимной функцией:

$.each(array, function(index, item) {
    array[index] = item.toUpperCase();
});

Обновление: Как справедливо отмечает afanasy в комментариях ниже, отображение String.toUpperCase напрямую будет работать только в браузерах на базе Gecko.

Чтобы поддерживать другие браузеры, вы можете предоставить свою собственную функцию:

var upperCasedArray = $.map(array, function(item, index) {
    return item.toUpperCase();
});

Ответ 2

Ознакомьтесь с JavaScript Array.map для получения информации об официальном Функция отображения JavaScript. Вы можете поиграть с образцом там как работает эта функция. Попробуйте скопировать это в поле примера:

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
var uppers = array.map(function(x) { return x.toUpperCase(); });
console.log(uppers);

И он напечатает:

DOM,LUN,MAR,MER,GIO,VEN,SAB

Ответ 3

Это может быть перебор, но вы также можете сделать

var upperCaseArray = array.map(String.prototype.toUpperCase.call.bind(String.prototype.toUpperCase));

Ответ 4

Вы можете реализовать для него функцию:

Array.prototype.myUcase=function()
{
  for (i=0;i<this.length;i++)
    {
    this[i]=this[i].toUpperCase();
    }
}

ИСПОЛЬЗОВАНИЕ

var fruits=["Banana","Orange","Apple","Mango"];
fruits.myUcase();

РЕЗУЛЬТАТ

BANANA,ORANGE,APPLE,MANGO 

Ссылка ССЫЛКА

Ответ 5

Вы можете использовать библиотеку Underscore.js, которая предоставляет стандартные функциональные операции.

Тогда код будет таким же простым, как:

_.map(array, function (x) { return x.toUpperCase(); });

Ответ 8

И вот однострочный без создания цикла или функции, совместимой с ES3 (может быть быстрее, поскольку вы только вызываете toUpperCase один раз, не тестировали)

// watch out for strings with comma (eg: ["hi, max"]) then use custom join/split()
// or just use something safer such as Array.map()
var uppercaseArray = array.toString().toUpperCase().split(",");
var uppercaseArray = array.join(0).toUpperCase().split(0);
var uppercaseArray = (array+"").toUpperCase().split(",");

Ответ 9

Я понимаю, что это немного поздно для партии, но я хотел добавить это здесь как еще один способ ее делегирования.

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];

"".toUpperCase.apply(array).split(',')

Ответ 10

Как и предыдущий ответ цикла, этот использует некоторые из основных функций javascript:

function looptoUpper(arr){
    var newArr = [];
    for (var i = 0; i < arr.length; i++){
        newArr.push(arr[i].toUpperCase());
    }
    return newArr;
}
looptoUpper(['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']);