检查XML HTTP请求中的重复值



我的任务是将功能添加到现有应用程序中。

目前,它显示了Google地图,如果XML HTTP响应中没有代码,则使用坐标的特定区域的覆盖为颜色为红色。然后,如果有一个值,则将其绿色上色。

function loadXMLDoc() {
  var xmlhttp;
  if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      stationground = xmlhttp.responseText.split(",");
    }    
  }
  xmlhttp.open("GET","stationareas.asp",true);
  xmlhttp.send();
  console.log(stationground);
}

function areaStatus() {
  loadXMLDoc();
  map.data.setStyle( function(feature) {
    var featurecountry = feature.getProperty('letter');
    if (stationground.indexOf(featurecountry) != -1) {    
      return/** @type {google.maps.Data.StyleOptions} */ {
        fillColor: 'red' , fillOpacity: 0.25 };
    } else {
      return/** @type {google.maps.Data.StyleOptions} */ {
        fillColor: 'green' , fillOpacity: 0.25 }; 
    }
    console.log(featurecountry);
  });
}

console.log返回stestareas.asp中SQL查询中列出的项目列表。

areaStatus()函数中是否有可能检查响应是否已经存在,如果是这样,我们可以计算说明是否有3个值" Apple"值,然后为绿色彩色。但是,如果有5种颜色,则"紫色"。

希望这是有道理的。任何帮助都会非常有帮助!

响应的结构:

[" C04"," C04"," C09"," C21"," C24"," C26"," C43"," C46"," C46"," C46"," C66"," C68"," C68"," C21"," C09"," C21"," C21"," C21"," E10"," E11"," E13"," E14"," E20"," E20"," E20"," E22"," E26"," E26"," E26"," G10"," G10"," G10"," G10"," G10"," G10"," G10"," G10"," G23"," G38"," G38"," G38"," G60"," G60)"," G60"," G10"," G10"," G10"," G60"," L15"," L30"," L30"," L30"," L30"," L31"," L32"," L32"," L32"," L32"," L35"," L55"," L55"," L72"," L95"," L30"," L30"," L55"," L30"," L30","]

您需要删除响应数组,并计算每个结果的出现。

在JavaScript中,有许多关于删除/计数唯一事件的主题的堆栈溢出搜索结果。这是使用O(n*n)也将构建您的返回对象的一种粗略方法。

javascript

// update the colors
function updateColors(obj) {
    if(obj.count == 1) {
        obj.fillColor = "red";
    } else if(obj.count < 3) {
        obj.fillColor = "yellow";
    } else if(obj.count < 10) {
        obj.fillColor = "green";
    } else {
        obj.fillColor = "blue";
    }
}
// your test data
var responses = ["C04", "C04", "C09", "C21", "C24", "C26", "C43", "C46", "C46", "C66", "C68", "C21", "C09", "C21", "C21", "C21", "E10", "E11", "E13", "E14", "E20", "E20", "E22", "E26", "G10", "G10", "G10", "G10", "G10", "G10", "G10", "G10", "G23", "G38", "G38", "G60", "G60", "G60", "G10", "G10", "G10", "G60", "L15", "L30", "L30", "L30", "L31", "L32", "L32", "L35", "L55", "L55", "L72", "L95", "L30", "L30", "L55", "L30", ""];
// a new array to track the objects
var results = [];
// for every element in your response
for (var i = 0; i < responses.length; i++) {
    // see if there is an existing match
    var found = false;
    // loop over the existing results
    for( var j = 0; j < results.length; j++ ) {
        // if the current response matches an existing result, update the count
        if(results[j].name == responses[i]) {
            results[j].count++;
            updateColors(results[j]); //update the colors
            found = true; //set the flag to true, so we dont add this as a new result
            j = results.length; //exit the loop
        }
    }
    // if the response element wasnt matched, add it as a new result
    if(!found) {
        results.push({name: responses[i], count: 1, fillColor: 'red', fillOpacity: 0.25})
    }   
}
//print everything
console.log(results)

'结果[2]'

的示例输出

计数:5
FillColor:"绿色"
填充性:0.25
名称:" C21"

您可以看到它在此JS小提琴中工作:https://jsfiddle.net/igor_9000/8tbmw2fg/

希望有帮助!

最新更新