들어오는 데이터를 식별하고 동일한 색을 정확히 적용해야합니다.JSON 데이터를 사용하여 특정 값에 특정 색 얻기
데이터 시퀀스는 고정되어 있지만 (모두 존재할 수도 있고 없을 수도 있음) 아래와 같이 고정 색상을 적용해야합니다.
예 : 예상 데이터 시퀀스 및 색상 순서는 다음과 같다 :
CLOSED GREEN
VERIFIED GREEN
RESOLVED YELLOW
REOPENED RED
IN_PROGRESS BLUE
ASSIGNED BROWN
NEW BROWN
UNCONFIRMED BROWN
그래서
CLOSED
는
GREEN
색상
RESOLVED
를 들어, 적용되어야 온다 때마다 ->
BROWN
-
UNCONFIRMED
을 위해 ...>
YELLOW
합니다.
이제 모든 데이터가 올 수 있고 예를 들어 오지 않을 수도 있습니다. 같은 자바 스크립트
CLOSED
VERIFIED
IN_PROGRESS
UNCONFIRMED
그래서 작성의 기본 논리 :
if (jsonData.search("CLOSED") != -1
&& jsonData.search("VERIFIED") != -1
&& jsonData.search("IN_PROGRESS") != -1
&& jsonData.search("UNCONFIRMED") != -1) {
colors: ['green', 'green', 'blue', 'brown'],
} else if (jsonData.search("IN_PROGRESS")
&& jsonData.search("ASSIGNED") != -1) {
colors: ['blue', 'brown'],
} else if (jsonData.search("IN_PROGRESS")) {
colors: ['blue'],
} else if (jsonData.search("CLOSED") != -1
|| jsonData.search("VERIFIED") != -1) {
colors: ['green'],
}
이 위의 순서를 위해 작동하지만 때마다 데이터는 예를 들어, 다른 것
IN_PROGRESS
NEW
또는
RESOLVED
REOPENED
NEW
또는
CLOSED
IN_PROGRESS
또는
RESOLVED
NEW
등
.. 많은 많은 조합 ...그러면 데이터에 잘못된 색상이 적용되고 실패합니다. 만약 내가 각각의 모든 데이터와 각각의 시퀀스의 상태를 작성한다면 나는 미쳐서 완전히 비 효과적이고 지루하고 복잡해질 것이다. 언급 한 것처럼
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"VERIFIED"},{"v":16}]},{"c":[{"v":"RESOLVED"},{"v":1}]},{"c":[{"v":"IN_PROGRESS"},{"v":14}]},{"c":[{"v":"ASSIGNED"},{"v":39}]},{"c":[{"v":""},{"v":0}]}]}
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"CLOSED"},{"v":3}]},{"c":[{"v":"VERIFIED"},{"v":13}]},{"c":[{"v":"RESOLVED"},{"v":2}]},{"c":[{"v":"IN_PROGRESS"},{"v":26}]},{"c":[{"v":"ASSIGNED"},{"v":2}]},{"c":[{"v":""},{"v":0}]}]}
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"IN_PROGRESS"},{"v":3}]},{"c":[{"v":"NEW"},{"v":8}]},{"c":[{"v":""},{"v":0}]}]}
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"RESOLVED"},{"v":12}]},{"c":[{"v":"IN_PROGRESS"},{"v":9}]},{"c":[{"v":"ASSIGNED"},{"v":15}]},{"c":[{"v":""},{"v":0}]}]}
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"VERIFIED"},{"v":6}]},{"c":[{"v":"IN_PROGRESS"},{"v":40}]},{"c":[{"v":"ASSIGNED"},{"v":7}]},{"c":[{"v":"NEW"},{"v":8}]},{"c":[{"v":""},{"v":0}]}]}
{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"CLOSED"},{"v":3}]},{"c":[{"v":"VERIFIED"},{"v":35}]},{"c":[{"v":"RESOLVED"},{"v":15}]},{"c":[{"v":"IN_PROGRESS"},{"v":92}]},{"c":[{"v":"ASSIGNED"},{"v":63}]},{"c":[{"v":"NEW"},{"v":16}]},{"c":[{"v":""},{"v":0}]}]}
수있는 사람이 효과적인 논리보다는 정확한 시퀀스에 대한 개별 데이터 + 색상 작성에 대한 생각 : 여기
은 샘플 JSON 데이터입니까?질문이나 문의 사항이 있으면 알려주십시오.
const DataMap = {
CLOSED: 'green',
VERIFIED: 'green',
RESOLVED: 'yellow',
REOPENED: 'red',
IN_PROGRESS: 'blue',
ASSIGNED: 'brown',
NEW: 'brown',
UNCONFIRMED: 'brown'
};
let colors = [];
Object.keys(DataMap).forEach((key, index) => {
if (jsonData.search(key) !== -1) {
colors.push(DataMap[key]);
}
});
jsFiddle를보고하십시오 : 데이터 시퀀스는 고정 된 순서에 당신이 문자열로 JSON을 치료하는 것을 고려하면
는
왜 데이터의 각 줄을 시퀀스로 처리하는 대신 개별적으로 처리 할 수 없습니까? –
JSON 데이터는 정확히 어떻게 보이나요? –
시퀀스를 기반으로 색상을 적용하고 싶습니다. 데이터를 별도로 처리하여 어떻게 알 수 있습니까? –