簡體   English   中英

JavaScript - 無法通過函數(參數)從對象數組中獲取屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM