簡體   English   中英

如何閱讀地圖<String,List<String> &gt; 並在 LWC JavaScript 中獲取鍵和值?

[英]How to read Map<String,List<String>> and get key and values in LWC JavaScript?

數據來自 Controller 之類的Map<String,List<String>並且需要在 Javascript 中讀取 Map。 我嘗試使用 keyset() 獲取密鑰,但失敗了。

地圖中的原始數據是:

{"error":["Error Fields: (FirstName) : FirstName required.","Error Fields: (Phone) : Office Phone Number Required.","Error Fields: () : House Phone number required"]}

在上面的數據中,我想根據 Key 'error' 循環值 List。

編輯

使用以下解決方案解決了上述問題。 但是現在我遇到了在 HTML 頁面中逐行顯示錯誤消息的問題。 我曾經使用 \\n 來划分錯誤消息,但是在控制台中打印,它看起來不錯。 但是當我傳遞給 HTML 時,它再次顯示在彼此旁邊。 這是代碼。

result['error'].forEach( x=>{                                   
                errMsg += x+ '\n';
             });      
             this.showErrorMessage = true;

結果在控制台:

errorMessage*****

FirstName Required.
Office Phone Number Required.
House Phone number required

但是在 HTML 中顯示時,它會像這樣並排顯示:FirstName Required。 辦公室電話號碼 必填。 需要家庭電話號碼。

HTML代碼:

<template if:true={showErrorMessage}>
                        <div>
                            <h6 style="color: red;">{errMsg }</h6>
                        </div>

                    </template>

JavaScript 沒有keyset方法,您可能將它與 Apex 混淆了?

你可以這樣做,有點老派,但如果你想要可讀性

let x = {
    "error":[
        "Error Fields: (FirstName) : FirstName required.",
        "Error Fields: (Phone) : Office Phone Number Required.",
        "Error Fields: () : House Phone number required"
     ]
};

if(x && x.error && x.error.length){
    for(let i = 0; i < x.error.length; ++i){
        console.log(x.error[i]);
    }
}

或者,如果您對現代 JavaScript 和回調函數感到滿意,則可以使用array.map方法

x.error.map(function(row){
    console.log(row);
});

甚至“箭頭函數”

console.log(x.error.map(i => i));

如果您開始使用 Lightning Web Components 入門,如https://trailhead.salesforce.com/en/content/learn/modules/modern-javascript-development可能會有所幫助。 或者任何關於 EC6 的在線課程(EcmaScript 6,你會在一些 LWC 教程中看到很多的 JavaScript 規范版本)。 有一些黑魔法,如擴展運算符、箭頭函數,需要一段時間才能習慣。

從編寫更冗長但可讀的代碼開始,然后慢慢轉向更高級的語法並沒有錯,特別是如果您在大團隊中並且不是每個人都是 JS 之神。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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