由于jsonData.search(key)!== -1,JavaScript代码与“COMPLETED”匹配,因为JSON响应不包含COMPLETED,所以它应该在输出中显示红色而不是绿色。
Getting specific color for specific value using JSON data
输出:[“绿色”,“红色”]
预期:[“红色”]
{"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 - 绿色”。
颜色键应首先匹配“NOT_COMPLETED - red”。
我如何与NOT_COMPLETED匹配 - 读取颜色而不是COMPLETED - 绿色?
答案 0 :(得分:1)
此https://jsfiddle.net/xq7hLo6h/6/只需搜索"KEY"
(带引号)而不是KEY
的JSON字符串即可修复此问题:
if (jsonData.search("\"" + key + "\"") >= 0) { /* ... */ }
这样可以避免在COMPLETED
内找到"NOT_COMPLETED"
的问题。
然而,更健壮的方法是实际解析JSON字符串以获取对象,然后检查实际属性。