[英]how to test if there is specific object property value already stored in local storage array
I have two input values in my HTML, siteName and siteUrl and I am asigning them to two objects property (name:siteName, url:siteUrl). 我的HTML中有两个输入值siteName和siteUrl,并将它们分配给两个对象属性(名称:siteName,url:siteUrl)。 Then after object was created I am pushing it to an array and storing into browsers local storage, but before it goes to local storage I want to test object property name value and if it is already there to alert me 然后,在创建对象之后,我将其推送到数组中并存储到浏览器中的本地存储中,但是在进入本地存储之前,我要测试对象属性名称值,以及是否已经存在该值来提醒我
This is my code for now... 这是我现在的代码...
//get site name and site url
var siteName = document.getElementById('siteName').value;
var siteUrl = document.getElementById('siteUrl').value;
var bookmark = {
name:siteName,
url:siteUrl
}
/test if item bookmarks is null
if(localStorage.getItem('bookmarks') === null){
//Initiate Array
var bookmarks = [];
//add to array
bookmarks.push(bookmark);
//set to local storage
localStorage.setItem('bookmarks', JSON.stringify(bookmarks));
//get bookmarks from local storage
}else{
var bookmarks = JSON.parse(localStorage.getItem('bookmarks'));
//add bookmark in array
bookmarks.push(bookmark);
//re-set back to local storage
localStorage.setItem('bookmarks', JSON.stringify(bookmarks));
}
you can it by using .length The length property returns the number of elements in an array. 您可以使用.length来实现。length属性返回数组中元素的数量。 And .valueOf() method return value of string object but .valueOf() you can't use explicitly in your code. .valueOf()方法返回字符串对象的值,但是.valueOf()您不能在代码中显式使用。
There are two ways to do this. 有两种方法可以做到这一点。
1st method- 第一种方法
//get localstorage value
var bookmarks = JSON.parse(localStorage.getItem('bookmarks'));
var flagExists = false;
if(bookmarks != null && bookmarks.length > 0){
for(var i=0; i<bookmarks.length; i++){
var existingBookmark = bookmarks[i];
//check if your current value against key name is already present in any existing bookmar
if(bookmark.name === existingBookmark.name){
//do anything that you want here
flagExists = true;
break;
}
}
}
2nd Method is to use Lodash Library. 第二种方法是使用Lodash库。 With lodash you can do this in one line. 使用lodash,您可以在一行中完成此操作。
//get localstorage value
var bookmarks = JSON.parse(localStorage.getItem('bookmarks'));
var flagExists = false;
var _ = require("lodash");
if(bookmarks != null && bookmarks.length > 0){
var flagExists = _.find(bookmarks, {'name': bookmark.name}) != null;
//do whatever you want
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.