繁体   English   中英

唯一属性计数json

[英]unique attribute count json

我有一个JSON文件如下

 {"Teams": [
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
]}

提取f3的唯一属性值的最佳方法是什么?

在我们的示例中,我应该将唯一的f3属性存储在一个数组中,该数组应该具有["Jun-2016","May-2016","Aug-2016"]

使用Array#reduce方法

 var data= {"Teams": [ {"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"}, {"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"}, {"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"}, {"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"}, {"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"}, ]}; var res = data.Teams.reduce(function(arr, ele) { // check element already exist if not push the value to the array if (arr.indexOf(ele.f3) === -1) arr.push(ele.f3); return arr; // set initial value as empty array }, []); console.log(res); 

 var arrnew = [] var data = { "Teams": [{ "id": "1", "f1": "Currency", "f2": "All", "f3": "May-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Aug-2016", "color": "R" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Jun-2016", "color": "R" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "May-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "May-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Jun-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Jun-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Aug-2016", "color": "R" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "May-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "Jun-2016", "color": "G" }, { "id": "1", "f1": "Currency", "f2": "All", "f3": "May-2016", "color": "G" }, ] } $.each(data.Teams, function(i, v) { if ($.inArray(v.f3, arrnew) == -1) { arrnew.push(v.f3); }; }) console.log(arrnew) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

  1. 迭代数据
  2. 创建新数组,如果不推送值,则检查数组中是否存在值

您可以使用forEachindexOf方法来查找唯一的f3值

var x= {"Teams": [
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
]}
var _m =(x.Teams);
var uniquef3 = [];
_m.forEach(function(item){
 if(uniquef3.indexOf(item.f3) ==-1){
    uniquef3.push(item.f3)
 }

})
console.log(uniquef3)

JSFIDDLE

尝试这个

var x ={"Teams": [
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
]}

newaArr =[]

angular.forEach(x.Teams,function(val,index){
if(newaArr.indexOf(val.f3) ==-1){
newaArr.push(val.f3)
}

})

这可以通过一些优化的方式来完成。 您可以缓存f3的唯一值。 下次只需使用JavaScript的hasOwnProperty检查它们的存在。 这将减少搜索存在的复杂性。

 var Teams = [
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
];

var output=[];
var cache = {};

for(var i in Teams) {
  if(!cache.hasOwnProperty(Teams[i].f3)) {
    cache[Teams[i].f3] = null;
  }
}
for(var key in cache) {
  output.push(key);
}
console.log(output);

您可以这样做:

var unique={}
var kt= {"Teams": [
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Aug-2016","color":"R"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"Jun-2016","color":"G"},
{"id":"1","f1":"Currency","f2":"All","f3":"May-2016","color":"G"},
]};

kt.Teams.forEach(function(value){unique[value.f3]=0;});
console.log(Object.keys(unique));

希望对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM