Как сопоставить массив с функцией верхнего регистра в 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(); });
Ответ 6
map()
как-то похоже на array_walk
http://jqapi.com/#p=map
Ответ 7
Javascript имеет метод map(). Хорошая ссылка на http://www.tutorialspoint.com/javascript/array_map.htm
Ответ 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']);