简体   繁体   English

如何测试本地存储阵列中是否已经存储了特定的对象属性值

[英]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.

相关问题 如何从本地存储对象访问特定属性? (角度2 /角度2-本地存储) - How do I access a specific property from a local storage object? (Angular 2/angular-2-local-storage) 如何更新本地存储中数组的特定值? - How to update a specific value from the array in local storage? 在javascript中,如何获取存储在对象属性中的数组中的值,其父对象存储在数组中? - In javascript, how to get value stored in an array stored in an object property, whose parent object is stored in an array? 如何在javascript中修改存储在本地存储中的对象? - How to modify object stored in local storage in javascript? 如何删除存储在本地存储中的数组元素 - How to delete an array element stored in local storage 如何使用 java 脚本从本地存储中获取存储的 object 数组并在浏览器中显示 - How to get stored object array from local storage and display in the browser using java script 如何更新本地存储中阵列的特定项目 - How to update a specific item of an array in local storage 如何从本地存储中的数组中删除对象? - How to remove object from array in local storage? 如何从本地存储中的数组删除对象? - How to delete an object from an array in local storage? 如何从本地存储中的阵列中删除 object - How to remove an object from an array in local storage
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM