我试图根据键值的比较来获取一系列唯一的JSON数据。
在此示例中,我尝试删除任何具有重复let array2 = ["one","two","","three","four","","five","six","","seven","eight"]
var splittedArray = array2.split { $0 == "" }
值的对象。
示例:
category
我试图将任何没有重复类别值的对象推送到数组。这是一个实时JSbin。
请帮忙!
答案 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]);
}
}