我試圖通過使用一個物件檢查有效引數和可接受的值(白名單)來驗證一個URL鏈接。
const validParams = {
"brand",
" item",
"size",
"國家"。
}
const validBrandValues = {
"nike",
"adidas"。
"puma"。
...
}
export const Validate = (link)=> {
const urltest = "https://example.com/?brand=nike adidas puma cat&item=trainers jackets socks& random=hello"
var url = ""/span>;
try {
url = decodeURI(urltest)。
} catch (e) {
console.error(e)。
}
const params = url.split("?)
const value = params[1].split("&")。 map(item => item.split("=") )。)
console.log(value)
//for(int i = 0; i < value.length; i ){
//if(value[i] =="brand"){
//for(int j = 0; j < value[i].length; j ) {
//validBrandValue.contains()
//}
//}
//}
}
//Current Output //Current Output
(3) [Array(2)。Array(2), Array(2) ]
0: (2) ["brand", "nike adidas puma cat"]
1。(2) ["item", "trappers jackets socks"]
2: (2) ["隨機", "你好"]
我怎樣才能有效地分析Validate函式中的輸入URL,以標記任何非白名單的值或引數。在所提供的鏈接例子中,它將標記出cat是一個未知的品牌和random引數是無效的
uj5u.com熱心網友回復:
這里有一個方法:
。const validValues = {
品牌: [ "nike", "adidas", "puma" ] 。
item: [ "trainers", "jackets", "socks"]
}
const Validate = link => {
const url = new URL(link)。
const entries = [...url.searchParams.entries() ] 。
let testArr = entries.map(entry => {
const key = entry[0] 。
const valids = validValues[key]; //key exists
const values = entry[1].split(" "); //parms space separated.
return {
[key]: valids ? values.map(span class="hljs-params">elem => ({ [elem]:valids.includes(elem)}): false。
}
})
return testArr;
};
console.log(Validate("https://example.com/?brand=nike adidas puma cat&item=trainers jackets socks& random=hello"))/code
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/311802.html
標籤:
上一篇:檢查串列是否是有效的塊狀物序列
