我需要你的帮助,
出于某种奇怪的原因,当我的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]) }
}
}
答案 0 :(得分:1)
您可以从
切换Vector
到
str.indexOf(key)
key.indexOf(str)

答案 1 :(得分:1)
要回答为什么它不能按你的意愿工作......
你有:
str.indexOf(key)
这将检查key
中str
的第一个实例。
因此,在您的循环中,key
首先等于OTHER-REQUEST-ASF
的{{1}},因此条件为真。
但是,要做你想做的事情,如果你知道模式总是OTHER-REQUEST-ASFA
,最简单的方法是使用split()
:
OTHER-REQUEST-XYZ
将始终返回最后一个str.split('-')[2]
答案 2 :(得分:0)
原因"其他请求-ASFA" .indexOf(" OTHER-REQUEST-ASF")不会返回-1,因此它将显示" ASF"
答案 3 :(得分:0)
您还可以使用静态方法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();