最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to Remove or avoid duplicate values in LocalStorage - Stack Overflow

programmeradmin2浏览0评论

When user click on button it will store some value in LocalStorage and if user click same button again it will store same value again in LocalStorage, How can i remove or avoid duplicates same values in LocalStorage ?!
Can anyone please help me :)

HTML:

<a onclick="AddToCart('ae90ac1a-64c4-49a7-b588-ae6b69a37d47');">Add to Cart</a>
<a onclick="AddToCart('3e58aa74-4585-4bee-b2e0-ed39a1d95442');">Add to Cart</a>

JavaScript:

function AddToCart(varer) {
   var itemsLocalStorage = JSON.parse(localStorage.getItem("itemsline") || "[]");
    itemsLocalStorage.push(varer);
    localStorage.setItem("itemsline", JSON.stringify(itemsLocalStorage));
}

LocalStorage (Before user click) :

[]

LocalStorage (When user click ):

["ae90ac1a-64c4-49a7-b588-ae6b69a37d47"]

LocalStorage (When user click again):

["ae90ac1a-64c4-49a7-b588-ae6b69a37d47","ae90ac1a-64c4-49a7-b588-ae6b69a37d47"]

I tried with filter but for some reason it's not going to work:

itemsLocalStorage = itemsLocalStorage.filter(e => e === varer);

When user click on button it will store some value in LocalStorage and if user click same button again it will store same value again in LocalStorage, How can i remove or avoid duplicates same values in LocalStorage ?!
Can anyone please help me :)

HTML:

<a onclick="AddToCart('ae90ac1a-64c4-49a7-b588-ae6b69a37d47');">Add to Cart</a>
<a onclick="AddToCart('3e58aa74-4585-4bee-b2e0-ed39a1d95442');">Add to Cart</a>

JavaScript:

function AddToCart(varer) {
   var itemsLocalStorage = JSON.parse(localStorage.getItem("itemsline") || "[]");
    itemsLocalStorage.push(varer);
    localStorage.setItem("itemsline", JSON.stringify(itemsLocalStorage));
}

LocalStorage (Before user click) :

[]

LocalStorage (When user click ):

["ae90ac1a-64c4-49a7-b588-ae6b69a37d47"]

LocalStorage (When user click again):

["ae90ac1a-64c4-49a7-b588-ae6b69a37d47","ae90ac1a-64c4-49a7-b588-ae6b69a37d47"]

I tried with filter but for some reason it's not going to work:

itemsLocalStorage = itemsLocalStorage.filter(e => e === varer);
Share Improve this question asked Dec 20, 2019 at 11:00 The Professor and the MadmanThe Professor and the Madman 1994 silver badges17 bronze badges 2
  • 1 You can use Set / Map data-structures to check for unique values (ids) – AndrewShmig Commented Dec 20, 2019 at 11:03
  • Just checkout my answer. – Pushprajsinh Chudasama Commented Dec 20, 2019 at 11:06
Add a ment  | 

4 Answers 4

Reset to default 4

Grab the array from localStorage, push the value to the array if it's not found in that array already, and then update localStorage if we pushed.

var array = JSON.parse(window.localStorage.getItem("itemsline")) || [];//the "|| []" replaces possible null from localStorage with empty array
var value = "some value";
if(array.indexOf(value) == -1){
    array.push(value);
    window.localStorage.setItem("itemsline", JSON.stringify(array));
}

Here's a version of this same code that is more explanatory of how it works:

//All values stored in localStorage are strings.
//Grab our itemsline string from localStorage.
var stringFromLocalStorage = window.localStorage.getItem("itemsline");

//Then parse that string into an actual value.
var parsedValueFromString = JSON.parse(stringFromLocalStorage);

//If that value is null (meaning that we've never saved anything to that spot in localStorage before), use an empty array as our array. Otherwise, just stick with the value we've just parsed out.
var array = parsedValueFromString || [];

//Here's the value we want to add
var value = "some value";

//If our parsed/empty array doesn't already have this value in it...
if(array.indexOf(value) == -1){
    //add the value to the array
    array.push(value);

    //turn the array WITH THE NEW VALUE IN IT into a string to prepare it to be stored in localStorage
    var stringRepresentingArray = JSON.stringify(array);

    //and store it in localStorage as "itemsline"
    window.localStorage.setItem("itemsline", stringRepresentingArray);
}

Take temp array and then check for duplicate values.

var arr = ["ae90ac1a-64c4-49a7-b588-ae6b69a37d47","ae90ac1a-64c4-49a7-b588-ae6b69a37d47"]
function squash(arr){
var tmp = [];
for(var i = 0; i < arr.length; i++){
    if(tmp.indexOf(arr[i]) == -1){
    tmp.push(arr[i]);
    }
}
return tmp;
}

console.log(squash(arr));

You could use filter array.filter((item, index) => array.indexOf(item) === index)

const array = ["ae90ac1a-64c4-49a7-b588-ae6b69a37d47","ae90ac1a-64c4-49a7-b588-ae6b69a37d47"];
const filteredArray = array.filter((item, index) => array.indexOf(item) === index);

console.log(filteredArray)

You can use Set object of js it always add value only when it is unique

 var array = JSON.parse(localStorage.getItem("items")) || [];
let set =new Set(array)
set.add(newValue)
const toArr=Array.from(set)
localStorage.setImem("items",JSON.stringify(toArr))
发布评论

评论列表(0)

  1. 暂无评论