У меня есть массив объектов:
var keywordset = [
{word:["PO","Pending Order"],message:["Do you need to post registry?"]},
{word:["delete"],message:["Do you want to delete in system?"]},
{word:["contact"],message:["Inter-related feature: Contact Management"]}
]
Кроме того, я создал функцию для преобразования строк в массив объектов в UpperCase:
function ObjectArrayUpperCase(arrayname,array1){
console.log(arrayname[0])
console.log(array1)
for(b=0;b<arrayname.length;b++){
for(c=0;c<arrayname[b].array1.length;c++){
arrayname[b].array1[c] = arrayname[b].array1[c].toUpperCase()
}
}
}
Затем я запускаю ObjectArrayUpperCase()
, передавая в нее параметр
ObjectArrayUpperCase(keywordset,'word')
К сожалению, ObjectArrayUpperCase()
неспособная обрабатывать часть "array1", кажется неспособной ее распознать. Но "arrayname" работает так, как ожидалось, потому что, если я заменю "array1" на "word", функция работает.
Я попытался изменить параметр, но все равно не повезло:
ObjectArrayUpperCase(keywordset,'word')
ObjectArrayUpperCase(keywordset,word)
ObjectArrayUpperCase(keywordset,keywordset.word)
etc...
Пожалуйста, сообщите, как передать правильный параметр функции
Вам нужны квадратные скобки для оценки выражения типа array1
которое будет использоваться как имя свойства.
for(var b=0;b<arrayname.length;b++) {
// -----------------------v------v--- and likewise below
for(var c=0;c<arrayname[b][array1].length;c++){
arrayname[b][array1][c] = arrayname[b][array1][c].toUpperCase()
}
}
}
В противном случае, как он мог знать, хотите ли вы использовать переменную или фактическое свойство с этим именем?
Кроме того, обязательно объявляйте свои переменные явно. Я использовал var
выше.
Наконец, циклы могут быть написаны немного более чисто, используя современный синтаксис и методы, подобные этому:
arrayname.forEach(obj => obj[array1] = obj[array1].map(s => s.toUpperCase()))