此数组(catalog
)包含重复值。我需要将重复值附加到数组。
此处重复条目按类别和名称进行检查。
var catalog = {
products : [
{ category: 'fos', name: 'retek' },
{ category: 'fos', name: 'item' },
{ category: 'nyedva', name: 'blabla' },
{ category: 'fos', name: 'retek' },
]
};
var categories = [];
$.each(catalog.products, function(index, value) {
if ($.inArray(value.category, categories) == -1) {
//do nothing
} else {
if ($.inArray(value.name, categories) == -1) {
//do nothing
} else {
//add duplicate values to array
categories.push(value.name);
}
}
});
console.log(categories);
答案 0 :(得分:1)
var catalog={
products : [
{ category: 'fos', name: 'retek' },
{ category: 'fos', name: 'item' },
{ category: 'nyedva', name: 'blabla' },
{ category: 'fos', name: 'retek' },
]
};
var categories = [],
duplicates = [];
$.each(catalog.products, function(index, obj) {
var key = JSON.stringify(obj);
if (categories[key] === undefined) {
categories[key] = obj;
} else {
duplicates[key] = obj;
}
});
duplicates = Object.keys(duplicates).map(function (key) {
return duplicates[key]
});
console.log(categories);
console.log(duplicates);
console.log(duplicates.length);
console.log(duplicates[0]);
答案 1 :(得分:1)
var catalog={
products : [
{ category: 'fos', name: 'retek' },
{ category: 'fos', name: 'item' },
{ category: 'nyedva', name: 'blabla' },
{ category: 'fos', name: 'retek' },
]
};
var categories = [],
uniqueCategories = [];
for (var i=0 ; i< catalog.products.length; i++) {
var currProduct = catalog.products[i];
if (uniqueCategories.length){
for(var j=0; j< uniqueCategories.length; j++) {
if(currProduct.category === uniqueCategories[j].category && currProduct.name === uniqueCategories[j].name){
categories.push(currProduct)
}
}
} else {
uniqueCategories.push(currProduct)
}
}
console.log(categories);
答案 2 :(得分:0)
不太确定你需要什么,但据我所知,请尝试以下代码。
var duplicates = catalog.products.filter(function(item){
return catalog.products.some(function(i){
return i.category == item.category;
});
})