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

When user click on button it will store some value in LocalStorage and if user click same button again

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

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745665082a4639072.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信