Javascript 使用jQuery从JSON数组获取唯一结果
我有一段代码,它将数组中的“类别”显示在JQuery简单列表中 它工作正常,但如果类别“basketball”中有3个项目,则该类别将显示3次 我怎么能让它们只出现一次呢?多谢各位 代码如下:Javascript 使用jQuery从JSON数组获取唯一结果,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我有一段代码,它将数组中的“类别”显示在JQuery简单列表中 它工作正常,但如果类别“basketball”中有3个项目,则该类别将显示3次 我怎么能让它们只出现一次呢?多谢各位 代码如下: function loadCategories() { console.debug('About to refresh with sort type : ' + sortType); var items = []; $.each(catalog.products,
function loadCategories() {
console.debug('About to refresh with sort type : ' + sortType);
var items = [];
$.each(catalog.products,
function(index, value) {
items.push('<li id="' + index + '">' +
'<a data-identity="productId" href="./productList.page?category=' + value.category + '" >' +
'<p style="margin-bottom:0px;margin-top:0px;">' + value.category + '</p></a> </li>');
}
);
categoryView.html(items.join(''));
categoryView.listview('refresh');
}
我不知道您的
产品数组是如何构建的(因此我的示例可能需要根据您的需要进行一些修改),但您可以编写一段代码,首先将您的独特类别收集到一个新数组中:
var categories = [];
$.each(catalog.products, function(index, value) {
if ($.inArray(value.category, categories) === -1) {
categories.push(value.category);
}
});
categories
将保存您所需的唯一类别,您可以使用它来构建HTML(但要小心那些li
元素的ID,记住ID不能重复,您可能会给它们一点前缀)。如何通过属性获取唯一值
function groupBy(items,propertyName)
{
var result = [];
$.each(items, function(index, item) {
if ($.inArray(item[propertyName], result)==-1) {
result.push(item[propertyName]);
}
});
return result;
}
用法
var目录={
产品:[
{类别:'fos',名称:'retek'},
{类别:'fos',名称:'item'},
{类别:'nyedva',名称:'blabla'},
{类别:'fos',名称:'gihi'},
]
};
log(q.uniq(q.map(catalog.products,'category'))代码>
似乎不起作用。。我会通知你的。我用数组中的代码编辑了我的问题,如果你有时间的话。再次感谢。@JFFF我已将您的示例对象加载到我的代码中:。似乎对我有用。请随意调整我的小提琴,以获得您期望的结果(可能您想在类别
数组中添加额外的值)。您好,有没有办法使它对任何其他字段都是唯一的,所以让我们假设(使用categories json)您希望所有颜色都没有任何重复。@Djeroen是的,有,您只需稍微更改代码。我建议你玩代码,理解它,然后你会发现它很简单。
function groupBy(items,propertyName)
{
var result = [];
$.each(items, function(index, item) {
if ($.inArray(item[propertyName], result)==-1) {
result.push(item[propertyName]);
}
});
return result;
}
var catalog = { products: [
{ category: "Food & Dining"},
{ category: "Techonology"},
{ category: "Retail & Apparel"},
{ category: "Retail & Apparel"}
]};
var categoryNames = groupBy(catalog.products, 'category');
console.log(categoryNames);