一组唯一的JSON值

时间:2015-08-24 17:26:39

标签: javascript

我试图根据键值的比较来获取一系列唯一的JSON数据。

在此示例中,我尝试删除任何具有重复let array2 = ["one","two","","three","four","","five","six","","seven","eight"] var splittedArray = array2.split { $0 == "" } 值的对象。

示例:

category

我试图将任何没有重复类别值的对象推送到数组。这是一个实时JSbin

请帮忙!

4 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,这是其中之一:遍历所有项目,并过滤掉我们已经添加到该类别的项目。为此,我们使用一个对象来保持我们看到的类别以及哪些类别是新的,因此我们只筛选出看到的类别:

var seen = {}

var unique = products.filter(function(item){
    if(seen.hasOwnProperty(item.category)){
        return false;
    }else{
        seen[item.category] = true;
        return true;
    }
})

console.log(unique); // only 2 objects

答案 1 :(得分:0)

切换

for(i = 0; i< products.length; i++){    
    if(uniqueNames.indexOf(products[i].category) === -1){
        uniqueNames.push(products[i]);        
    }        
}

for(i = 0; i< products.length; i++){    
        if(uniqueNames.indexOf(products[i].category) === -1){
            uniqueNames.push(products[i].category);  // Push Name of category. Will now not place duplicates into UnqiueNames     
        }        
    }

控制台

["fos", "nyedva"]

答案 2 :(得分:0)

当我尝试这样做时,我通常将所有值都作为键放入地图中,因为地图数据结构只允许使用唯一键。所以对于这种情况:

var crops = [   { 
    id:     0023,
    crop:   "corn"
},
{
    id:     0034,
    crop:   "corn"
},
{
    id:     0222,
    crop:   "wheat"
}
 ];
var cropsMap = {};
for(var i = 0; i < crops.length; i++) {
   cropsMap[crops[i].crop] = true;
}
var uniqueCrops = Object.keys(cropsMap);

如果你想查看它,我发了codepen

答案 3 :(得分:0)

lookup = [];    

for (var product, i = 0; product = products[i++];) {
   var cat = item.category;

   if (!(cat in lookup)) {
     lookup[cat] = 1;
     result.push(products[cat]);
   }
 }
相关问题