我有一个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"]
答案 0 :(得分:1)
使用 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);

答案 1 :(得分:0)
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>
答案 2 :(得分:0)
您可以使用forEach
&amp; indexOf
方法来查找唯一的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)
答案 3 :(得分:0)
试试这个
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)
}
})
答案 4 :(得分:0)
这可以做一些优化的方式。您可以缓存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);
答案 5 :(得分:0)
你可以这样做:
.line:before {
content: n;
}
希望它会有所帮助