[英]JSON response incorrectly matches partial key for color data
下面的JavaScript代碼由於jsonData.search(key)!== -1而與“ COMPLETED”匹配,這是錯誤的,因為JSON響應不包含COMPLETED,因此輸出中應顯示紅色而不是綠色。
輸出:[“綠色”,“紅色”]
預期:[“紅色”]
{"cols":[{"label":"sprint_status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"NOT_COMPLETED"},{"v":4}]}]}
const colorMap = {
COMPLETED: 'green',
NOT_COMPLETED: 'red'
};
Object.keys(colorMap).forEach((key, index) => {
if (jsonData.search(key) !== -1) {
customColors.push(colorMap[key]);
}
});
彩色鍵由於搜索(鍵)而首先匹配為“ COMPLETED-green”。
顏色鍵應首先匹配“ NOT_COMPLETED-紅色”。
如何與NOT_COMPLETED-讀取顏色而不是COMPLETED-綠色匹配?
這個https://jsfiddle.net/xq7hLo6h/6/通過簡單地在JSON字符串中搜索"KEY"
(帶引號)而不是KEY
來解決此問題:
if (jsonData.search("\"" + key + "\"") >= 0) { /* ... */ }
這樣可以避免在"NOT_COMPLETED"
內部發現COMPLETED
的問題。
但是,更健壯的方法是實際解析JSON字符串以獲取對象,然后檢查實際屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.