[英]JavaScript - Unable to get property from an Array of Object over function(parameters)
我有一個對象數組:
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"]}
]
此外,我創建了一個函數來將對象數組中的字符串轉換為大寫:
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()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.