Javascript sessionStorage if值已存在

Javascript sessionStorage if值已存在,javascript,html,local-storage,session-storage,Javascript,Html,Local Storage,Session Storage,发现使用sessionStorage显示最近查看的产品的非常好的脚本。只有一个问题:每个产品都可以存储并多次显示 这是JSFIDLE 应该还有一个IF来检查当前产品是否已经在存储中,如下所示: // check if product already in storage if(!productExistsInStorage()) { var currentCount = parseInt(sessionStorage.getItem("storedCount")); // a

发现使用sessionStorage显示最近查看的产品的非常好的脚本。只有一个问题:每个产品都可以存储并多次显示

这是JSFIDLE

应该还有一个IF来检查当前产品是否已经在存储中,如下所示:

// check if product already in storage
if(!productExistsInStorage()) {

    var currentCount = parseInt(sessionStorage.getItem("storedCount"));

    // add to storage
    sessionStorage.setItem(currentCount.toString(), JSON.stringify(productInfo()));

    // update storedCount var by one
    sessionStorage.setItem("storedCount", (currentCount + 1).toString());

}
我试着去,但没有成功


任何提示如果产品数据已经在sessionStorage中设置,如何不保存它?

为什么不检查该项目的会话存储是否为空

if(sessionStorage.getItem("storedCount") === null)
{
//do something
}
最好创建一个函数,您可以将项目名称传递给它进行检查

function doesStorageExist(item)
{

if(sessionStorage.getItem(""+item) === null)
{
//do something
}

}

我不会在
sessionStorage
中为每个产品设置单独的项,而是将它们全部设置在一个数组中。这样可以更容易地检查它是否已经存在:

var currentItems = JSON.parse(sessionStorage.getItem('products'));
var currentProduct = productInfo();
if (currentItems.filter(function(p){return p.productURL == currentProduct.productURL}).length == 0) {
// add
}

我自己查过后才发现这篇文章

if ("value" in sessionStorage) {
    alert("yes");
}
else {
    alert("no");
}

因为OP关心项目的内容。ID不断增加。这个问题毫无意义。您正在尝试在会话存储中增加计数变量吗?!按照我对这个问题的理解,用户可以将项目添加到他们的存储中。每次,它都会被赋予一个新的ID,即使实际的项目已经存在。因此,需要检查内容,而不仅仅是数字。好的,请检查内容是否存在。。。在项目IDRight中保留一个计数,这更像我的答案。您的没有。错误日志“sessionStorage.get不是函数”输入错误。应该是
getItem
好的,谢谢,但我不可能按照您的建议重写代码(将产品数据保存到数组)。我太笨了,不能这样做:/