试图阻止页面上的重复项目

时间:2016-12-19 15:59:41

标签: javascript jquery arrays json sorting

我正在使用JSON数据库。单击页面上的项目后,它会在页面上显示项目内容。在底部,我为每个项目都有一个类似的产品。单击类似产品后,它会刷新包含新项目内容的页面。

将类似产品随机化并添加到名为" categoryItems"的新阵列中。我正在推动基于商品和品牌的商品到这个新阵列。它还会检查DIV" productTitle"并在数据库中查找该关键字。如果匹配,则显示该类别。我遇到的问题是有时随机项与页面上已有的项匹配。我在下面加了一个代码笔。如果您单击类似产品几次,您将看到它最终与页面上已有的产品相匹配。我需要一点来防止这种情况。希望有人能理解我的意思,谢谢!

Link to CodePen

var host = req.param('host');
var name = req.param('name');
var description = req.param('description');

1 个答案:

答案 0 :(得分:1)

我不确定您的问题,但如果您的问题只是有时显示类似的产品和产品,您只需要检查它们是否具有相同的参考,例如:

    $.each(json, function(i, item){
        if (prodTitle.indexOf("Tomatoes") !=-1) { 
            if(item.itemCommodity == '1120' && item.itemBrandLetter == "C" && prodTitle !== item.itemName) { // Added comparison between prodTitle and item.itemName
categoryItems.push(item);
 }
        } });

以下是产品标题的示例,但您应该查看生产参考。

我希望这会对你有所帮助

编辑1: 不客气: - )

顺便说一句,如果你只想要一个类似的产品,你为什么要扔掉你的整个JSON? 你可以替换这段代码

var similarProduct= '';
$.each(json, function(i,item){
    similarProduct = categoryItems[Math.floor(Math.random()*categoryItems.length)];
    similarProduct = '<div>' + '<a href="#" class="showProduct"' + 'data-itempageurl="' + similarProduct.itemFullUPC + '"' + 'data-itemgmo="' + similarProduct.itemGMOFree + '"' + 'data-itembpa="' + similarProduct.itemBPAFree + '"' + 'data-itemgluten="' + similarProduct.itemGlutenFree + '"' + 'data-itemlowsodium="' + similarProduct.itemLowSodium + '"' + 'data-itemorganic="' + similarProduct.itemOrganic + '"' + 'data-itemimage="' + similarProduct.imageURL + '"' + 'data-itemname="' + similarProduct.itemName + '"' + 'data-itemoz="' + similarProduct.itemPackSize + '"' + 'data-itemdescription="' + similarProduct.itemDescription + '"' + 'data-itemupc="' + similarProduct.itemFullUPC + '"' + '>' + '<img class="img-responsive img-hover similarProductImagesCategory" src="' + similarProduct.imageURL + '">' + '<h3 class="similarProductSubCategoryImgCaption">' + similarProduct.itemName + '</h3>' + '</a>' + '</div>';
});

使用

var similarProduct= '';
var randomProduct= {};
    randomProduct= categoryItems[Math.floor(Math.random()*categoryItems.length)];
    similarProduct = [...]//Keep ur stuff but use randomProduct instead of overwriting your similarProduct, your code will be more readable