簡體   English   中英

將字符串匹配到數組

[英]Matching a string to an array

我需要你的幫助

出於某些奇怪的原因,當我的var str設置為“ OTHER-REQUEST-ASFA ”時,匹配的鍵將返回為“ ASF ”,而不是“ ASFA

我怎樣才能得到“的返回的輸出鍵ASFA ”當我的str是“ OTHER-REQUEST-ASFA

function test() {

    var str = "OTHER-REQUEST-ASFA"

    var filenames = {
        "OTHER-REQUEST-ASF": "ASF",
        "OTHER-REQUEST-ASFA": "ASFA",
        "OTHER-REQUEST-ASFB": "ASFB",
        "OTHER-REQUEST-ASFC": "ASFC",
        "OTHER-REQUEST-ASFE": "ASFE" 
    }

    for (var key in filenames) {
        if (str.indexOf(key) != -1) { alert(filenames[key]) }
    }

}

您可以從

str.indexOf(key)

key.indexOf(str)

 function test() { var str = "OTHER-REQUEST-ASFA", filenames = { "OTHER-REQUEST-ASF": "ASF", "OTHER-REQUEST-ASFA": "ASFA", "OTHER-REQUEST-ASFB": "ASFB", "OTHER-REQUEST-ASFC": "ASFC", "OTHER-REQUEST-ASFE": "ASFE" }, key; for (key in filenames) { if (key.indexOf(str) != -1) { console.log(filenames[key]); } } } test(); 

要回答為什么它無法按您想要的方式工作...

你有:

str.indexOf(key)

這將檢查strkey的第一個實例。

因此,在您的循環中, key優先等於OTHER-REQUEST-ASF OTHER-REQUEST-ASFA一部分OTHER-REQUEST-ASF ,因此條件為true。


但是,要執行您想做的事情,如果您知道模式始終為OTHER-REQUEST-XYZ ,則最簡單的方法是使用split()

str.split('-')[2]

總是在最后一個之后返回最后一個部分-

原因“ OTHER-REQUEST-ASFA”。indexOf(“ OTHER-REQUEST-ASF”)將不會返回-1,因此將顯示“ ASF”

您還可以使用靜態方法Object.keys()來獲取鍵數組

 var test = () =>{ var str = "OTHER-REQUEST-ASFA" var filenames = { "OTHER-REQUEST-ASF": "ASF", "OTHER-REQUEST-ASFA": "ASFA", "OTHER-REQUEST-ASFB": "ASFB", "OTHER-REQUEST-ASFC": "ASFC", "OTHER-REQUEST-ASFE": "ASFE" } Object.keys(filenames).forEach(x => { if ( x.indexOf(str) !== -1) console.log(filenames[str]); }); } test(); 

暫無
暫無

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

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