Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组唯一值_Javascript_Json_Yql - Fatal编程技术网

Javascript 数组唯一值

Javascript 数组唯一值,javascript,json,yql,Javascript,Json,Yql,在处理从YQL返回的JSON时,我发现自己正在寻找一种从数组中提取所有唯一值的方法 function uniqueArrayValues(o){ var items = o.query.results.row, output = []; function check(val){ for(var c=0; c<output.length; c++){ if(output[c] === val){ return fals

在处理从YQL返回的JSON时,我发现自己正在寻找一种从数组中提取所有唯一值的方法

function uniqueArrayValues(o){
      var items = o.query.results.row,
          output = [];

  function check(val){
    for(var c=0; c<output.length; c++){
      if(output[c] === val){
        return false;
        }
    }
     return true;
  }

 for(var i=1; i<items.length; i++){
   if(check(items[i].team)){
     output.push(items[i].team);
    }    
  }

  return output;
}
 function check(val){
        return output.indexOf(val) != -1;
    }
函数唯一数组值(o){
var items=o.query.results.row,
输出=[];
功能检查(val){

对于(var c=0;c如果数组具有非平凡长度,则提取唯一元素的标准方法是对数组进行排序或散列

编辑:一些伪代码

sort array
last = unused
for each v in array do
  if v != last
     uniqueArray.push_back(v)
     last = v
  end if
end for
// uniqueArray now contains the unique elements of array

可以使用indexOf检查元素是否在数组中

function uniqueArrayValues(o){
      var items = o.query.results.row,
          output = [];

  function check(val){
    for(var c=0; c<output.length; c++){
      if(output[c] === val){
        return false;
        }
    }
     return true;
  }

 for(var i=1; i<items.length; i++){
   if(check(items[i].team)){
     output.push(items[i].team);
    }    
  }

  return output;
}
 function check(val){
        return output.indexOf(val) != -1;
    }
或者,如果具有唯一的id或名称,则使用对象而不是数组: 变量输出={}

for(var i=1; i<items.length; i++){
   if(!output[items[i].team.id])){
     output [items[i].team.id] = items[i].team;
    }    
  }

for(var i=1;iYou可以在YQL查询中筛选到唯一的值,如果这是您的选项的话。请参阅类似于
|unique(field=“row.team”)
(字段可能不同,取决于结果结构)。如果我只需要唯一的值,那就行了,但我是从已经在客户端的对象中提取这些值的(我只做了一个YQL请求)。@Q,很公平。答案应该可以帮到你。