var arr = ["福建", "福建>福州", "浙江>金华", "浙江>金华>义乌", "浙江>金华>永康"];已知数组中所有元素的格式如上,包含完整的路径 ,现在要获取其中范围最大的元素 如:["福建", "浙江>金华"]要怎么写...?

解决方案 »

  1.   

    var arr = ["福建", "福建>福州", "浙江>金华", "浙江>金华>义乌", "浙江>金华>永康"];
    arr.sort();
    var newArr=[];
    for(var i=0;i<arr.length;i++){
    if(arr[i].indexOf(newArr[newArr.length-1])==0) continue;
    if(arr[i+1].indexOf(arr[i])==0){
    newArr.push(arr[i]);
    }
    }
    alert(newArr.join());
      

  2.   

    下面是使用本地化排序的方式:
    var arr = ["福建", "福建>福州", "浙江>金华", "浙江>金华>义乌", "浙江>金华>永康"];
    arr.sort(function(a,b){  return a.localeCompare(b);});
    var newArr=[];
    for(var i=0;i<arr.length;i++){
    if(arr[i].indexOf(newArr[newArr.length-1])==0) continue;
    if(arr[i+1].indexOf(arr[i])==0){
    newArr.push(arr[i]);
    }
    }
    alert(newArr.join());
      

  3.   

    上面那两个有问题,当只存在一个唯一的名称,比如"上海"时,"上海"却不会被选出来(因为有一处不必要的酝酿痕迹没去掉),因此修正了一下,请使用这个:
    var arr = ["福建", "上海", "福建>福州", "浙江>金华", "浙江>金华>义乌", "浙江>金华>永康"];
    arr.sort(function(a,b){  return a.localeCompare(b);});
    var newArr=[];
    for(var i=0;i<arr.length;i++){
    if(arr[i].indexOf(newArr[newArr.length-1])==0) continue;
    newArr.push(arr[i]);
    }
    alert(newArr.join());
      

  4.   

    你好,首先 谢谢的回复...如果数组里面的元素都对象怎么办? 
     var arr = [{ Text: "福建", Value: 1 }, { Text: "福建>福州", Value: 1 > 11 }, { Text: "浙江>金华", Value: 2 > 21 }, { Text: "浙江>金华>义乌", Value: 2 > 21 > 211 }, { Text: "浙江>金华>永康", Value: 2 > 21 > 212}];