Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery从JSON数组获取唯一结果_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript 使用jQuery从JSON数组获取唯一结果

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,

我有一段代码,它将数组中的“类别”显示在JQuery简单列表中

它工作正常,但如果类别“basketball”中有3个项目,则该类别将显示3次

我怎么能让它们只出现一次呢?多谢各位

代码如下:

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);