我正在開發一個 Angular 應用程式,該應用程式正在映射來自
return this.http.get(this.url)
.toPromise()
.then(response => response as IValueSetDictionary[])
.catch(this.handleError);
到以下界面
export interface IValueSetDictionary {
valueSet: {};
}
這映射了來自 3rd 方服務的回應,該服務回傳類似于以下內容的 JSON 回應
{
"<CONCENTRATE> | 6": "<CONCENTRATE>",
"<PHYSICAL> | 5": "<PHYSICAL>",
"NYMEX WARRANT IN MT | 12": "NYMEX WARRANT IN MT",
"SHFE WARRANT | 13": "SHFE WARRANT"
}
我需要一些幫助來從回應中洗掉 '<' & '>'。
期望輸出
{
"CONCENTRATE | 6": "CONCENTRATE",
"PHYSICAL | 5": "PHYSICAL",
"NYMEX WARRANT IN MT | 12": "NYMEX WARRANT IN MT",
"SHFE WARRANT | 13": "SHFE WARRANT"
}
基本上,我想在映射回應時去掉 '<>' 標簽。我一直無法在打字稿中找到一種巧妙的方法來做到這一點。
uj5u.com熱心網友回復:
基本上,我想在映射回應時去掉 '<>' 標簽。我一直無法在打字稿中找到一種巧妙的方法來做到這一點。
它與 typescript 關系不大,在 javascript 中也是一樣。您需要做的是將您獲得的物件轉換為所需的形式。嘗試這樣的事情:
return this.http.get(this.url)
.toPromise()
.then(response => response as IValueSetDictionary[])
.then((value) => value.map((vs) => this.cleanValueSet(vs)))
.catch(this.handleError);
該cleanValueSet函式是實際替換不需要的字符并將物件重新組合在一起的函式:
private cleanValueSet = (vs: IValueSetDictionary): IValueSetDictionary => {
const result = Object.keys(vs.valueSet).reduce((acc, rawKey) => {
const key = rawKey.replace(/[\<\>]/g, '');
const value = (vs.valueSet[rawKey] as string).replace(/[\<\>]/g, '');
acc[key] = value;
return acc;
}, {} as { [key: string]: string });
return { valueSet: result };
};
uj5u.com熱心網友回復:
一種方法是對物件進行字串化,使用給定的 RegEx 洗掉括號并再次決議結果。
請注意:如果物件可能包含鍵/值,例如
'some < string which randomly contains opening and closing > brackets '
function removeAngleBrackets(obj) {
const jsonString = JSON.stringify(obj);
const result= jsonString.replace(/<(.*?)>/g,'$1');
return JSON.parse(result);
}
let o = {
"<CONCENTRATE> | 6": "<CONCENTRATE>",
"<PHYSICAL> | 5": "<PHYSICAL>",
"NYMEX WARRANT IN MT | 12": "NYMEX WARRANT IN MT",
"SHFE WARRANT | 13": "SHFE WARRANT"
}
console.log(removeAngleBrackets(o));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360623.html
上一篇:正則運算式判斷key
