在处理从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; }
代码看起来有点“忙”,我想知道是否有更优雅的方法从数组中提取唯一值。
您可以使用indexOf来检查元素是否在数组中。
function check(val){ return output.indexOf(val) != -1; }
或者如果您具有唯一的ID或名称,则使用对象而不是数组:var output = {}
for(var i=1; i<items.length; i++){ if(!output[items[i].team.id])){ output [items[i].team.id] = items[i].team; } }