localstorage:获取包含多个项目的特定localstorage值

2023-12-06

在本地存储中我有密钥'results' 有了这个values:

[{"id":"item-1","href":"google.com","icon":"google.com"},
{"id":"item-2","href":"youtube.com","icon":"youtube.com"},
{"id":"item-3","href":"google.com","icon":"google.com"},
{"id":"item-4","href":"google.com","icon":"google.com"},
{"id":"item-5","href":"youtube.com","icon":"youtube.com"},
{"id":"item-6","href":"asos.com","icon":"asos.com"},
{"id":"item-7","href":"google.com","icon":"google.com"},
{"id":"item-8","href":"mcdonalds.com","icon":"mcdonalds.com"}]

为了获得最后一个项目,我使用这个:

// this is how I parse the arrays
var result = JSON.parse(localStorage.getItem("result")); 


for(var i=0;i<result.length;i++) {
    var item = result[i];
    $('element').val(item.href);
}

如何获取 item-3 或特定 ID 的 href?


使用原生Array.filter

如果您仅针对现代浏览器(IE9+ 或最新版本任何其他主要浏览器)您可以使用 JavaScript 1.6 数组方法filter.

var testItem,
    data = [{"id":"item-1","href":"google.com","icon":"google.com"},
{"id":"item-2","href":"youtube.com","icon":"youtube.com"},
{"id":"item-3","href":"google.com","icon":"google.com"},
{"id":"item-4","href":"google.com","icon":"google.com"},
{"id":"item-5","href":"youtube.com","icon":"youtube.com"},
{"id":"item-6","href":"asos.com","icon":"asos.com"},
{"id":"item-7","href":"google.com","icon":"google.com"},
{"id":"item-8","href":"mcdonalds.com","icon":"mcdonalds.com"}];

function getItemById(data, id) {
    // filter array down to only the item that has the id
    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter
    var ret = data.filter(function (item) {
        return item.id === id;
    });

    // Return the first item from the filtered array   
    // returns undefined if item was not found
    return ret[0];
}


testItem = getItemById(data, 'item-3');

工作示例

手动循环数据

如果您不能使用过滤器,您可能只能使用循环:

var testItem,
    data = [{"id":"item-1","href":"google.com","icon":"google.com"},
{"id":"item-2","href":"youtube.com","icon":"youtube.com"},
{"id":"item-3","href":"google.com","icon":"google.com"},
{"id":"item-4","href":"google.com","icon":"google.com"},
{"id":"item-5","href":"youtube.com","icon":"youtube.com"},
{"id":"item-6","href":"asos.com","icon":"asos.com"},
{"id":"item-7","href":"google.com","icon":"google.com"},
{"id":"item-8","href":"mcdonalds.com","icon":"mcdonalds.com"}];

function getItemById(data, id) {
    var i, len;
    for (i = 0, len = data.length; i < len; i += 1) {
        if(id === data[i].id) {
            return data[i];
        }
    }

    return undefined;
}

testItem = getItemById(data, 'item-3');

工作示例

尽管用循环暴力破解它可能看起来不如使用Array.filter,事实证明,在大多数情况下循环比Array.filter.

重构为对象而不是数组

最好的解决方案,假设id您的每个项目都是唯一的,将重构您存储数据的方式。使用使用以下对象的对象,而不是对象数组id作为存储包含以下内容的对象的键href and icon键/属性值。

var data = {
    "item-1": {"href": "google.com", "icon": "google.com"},
    "item-2": {"href": "youtube.com", "icon": "youtube.com"},
    "item-3": {"href": "google.com", "icon": "google.com"},
    "item-4": {"href": "google.com", "icon": "google.com"},
    "item-5": {"href": "youtube.com", "icon": "youtube.com"},
    "item-6": {"href": "asos.com", "icon": "asos.com"},
    "item-7": {"href": "google.com", "icon": "google.com"},
    "item-8": {"href": "mcdonalds.com", "icon": "mcdonalds.com"}
};

这将使访问项目变得更加容易和更快:

var data = JSON.parse(localStorage.getItem("result")); 
data["item-3"].href;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

localstorage:获取包含多个项目的特定localstorage值 的相关文章

  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 是否可以使用 javascript 测试用户的浏览器/操作系统是否支持给定类型的链接?

    是否可以使用 javascript 或其他任何东西 测试用户的操作系统 浏览器是否支持给定的 url 方案 例如 大多数仅使用网络邮件的用户计算机上未设置 mailto 是否有可能以某种方式捕获单击 mailto 链接的尝试并弹出比浏览器错
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • IE 中的 jQuery .width(val) 错误 - 无效参数

    通过ajax加载内部div book table 后 我想调整正文的宽度以适应更大的内容 var new width parseInt book table css width 407 body width new width 在 FF 和
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • VBA - 从关闭的 Excel 工作簿中检索数据

    我正在尝试创建一个 VBA 脚本来从四个不同的工作簿收集数据 目前 我只是使用一本工作簿测试代码 但当我尝试获取数据时收到错误 虽然我想在不打开四个工作簿的情况下检索数据 但我需要打开它们才能找到最后一行数据 这是我当前的代码 Public
  • SilverStripe 4.1 - SS_DEFAULT_ADMIN_USERNAME 和 PASSWORD 不受尊重

    我有一个在 Ubuntu Vagrant VM 上运行的 SilverStripe 4 1 站点 从 3 4 升级 我有以下内容 env file Default Admin SS DEFAULT ADMIN USERNAME admin
  • 如何从 STDIN 将行导入到 Postgresql? [复制]

    这个问题在这里已经有答案了 在 Python 中 我有以下命令可以将行批量加载到 Postgresql 而不使用文件 import csv import subprocess mylist keys name fred name mary
  • video-js 自定义字体在 Firefox 中不起作用

    使用 Firefox 查看这里 我有 22 0 http www jamhouse com au 您会看到 video js 自定义字体不起作用 在 Chrome 中运行良好 任何想法将不胜感激 Watto Firefox 有极其严格的跨域
  • 如何在Java中获取.(点)之前和/(最后一个)斜杠之后的字符串

    我有一个像这样的字符串 core pages viewemployee jsff 从这段代码中 我需要获取 viewemployee 我如何使用 Java 获得这个 假设您将该字符串保存在名为的变量中myString String mySt
  • 如何在C++中添加2个任意大小的整数?

    我想在 C 中添加 2 个任意大小的整数 我该怎么做呢 Here s an example showing how to use the OpenSSL bignum implementation for arbitrary precisi
  • 无法将类型“十进制”隐式转换为“字符串”

    我正在创建的购物车中有此代码 但我收到标题中显示的错误 错误显示在这一行上 只需致电ToString获取十进制值的字符串表示形式 order Total orderTotal ToString G 虽然我不明白你为什么要存储会员Total
  • 单个引用变量如何访问所有对象字段?

    Animal myAnimal new Animal 我上面有这段代码 据我所知 它会做这些事情 将在堆内存上创建一个动物对象 对该对象的引用将传递给引用变量 myAnimal 换句话说 myAnimal 变量保存 Animal 对象在堆上
  • 如何在OpenCV2 python中查看视频流

    我开始玩Opencv 我在 Linux 上使用 opencv2 的 python 绑定 我编写了一个快速测试程序 但它似乎无限期地挂起 import cv2 weblink http continuous video stream here
  • Django框架中的一次性操作操作应该放在哪里?

    我想执行一些一次性操作 例如在 Django 服务器启动时启动后台线程并每 30 分钟填充一次缓存作为初始化操作 这样它就不会阻止用户访问网站 我应该将所有这些代码放在 Django 中的哪里 将它们放入setting py文件中不起作用
  • 使用(Anaconda 与 PyCharm

    我的 Linux Ubuntu 14 04 机器上运行着 Pycharm 4 除了系统 python 之外 我还安装了 Anaconda 让两者很好地协同工作似乎有点问题 PyCharm 提供了一些有趣的集成virtualenvs and
  • 是否可以更改 Python 中函数的默认参数?

    在Python中 是否可以在运行时重新定义函数的默认参数 我在这里定义了一个有3个参数的函数 def multiplyNumbers x y z return x y z print multiplyNumbers x 2 y 3 z 3
  • 在for循环中写入多个文件

    我有这样的样本数据 df lt data frame name rep letters 1 7 each 24 salary runif 24 7 100 200 我想将每个名字与他们的薪水分开 lst lt tapply df salar
  • 在Java中获取系统音频级别

    如何获得 Java 中的主卷 我想制作一个显示 不变 这个值 可能在JProgressBar或类似的东西 作为最大设置的百分比 我可能还想将当前声级显示为最高可能声级的百分比 但这不是必需的 我不完全确定 但你可以看看 Java 媒体框架
  • pytorch 等效 tf.gather

    我在将一些代码从tensorflow移植到pytorch时遇到一些问题 所以我有一个尺寸为 10x30 的矩阵 代表 10 个示例 每个示例有 30 个特征 然后我有另一个维度为 10x5 的矩阵 其中包含第一个矩阵中每个示例的 5 个最接
  • Mex 文件在 OS X 10.9 下使用 Xcode 5.1 和 MATLAB 2012a

    我正在尝试编译 OpenCV 3 0 0 的开发人员版本 但是我无法将我的系统配置为 mex C 文件 我尝试遵循 stackoverflow 的建议 目前我可以合并 c 文件 但不能合并 C 文件 我所做的是编辑mexopts sh这样就
  • 如何使用 REST API 在 Jira 中创建问题?

    如何使用 REST API 在 Jira 中创建问题 我已经尝试过使用curl 的示例 但我需要使用 Java 和 REST API 在 Eclipse 中创建缺陷 您想将 JIRA 集成到 Eclipse 中吗 See https con
  • 这是一个合理的 Objective-C 块实现吗?

    我想要 NSRegularExpression 的变体 stringByReplacingMatchesInString options range withTemplate 使用块而不是模板的方法 该块的返回值将用作替换值 正如您可以想象
  • 使用 httplib POST 二进制数据导致 Unicode 异常

    当我尝试使用 urllib2 发送图像时 发生 UnicodeDecodeError 异常 HTTP 帖子正文 f open imagepath rb binary f read mimetype devnull mimetypes gue
  • localstorage:获取包含多个项目的特定localstorage值

    在本地存储中我有密钥 results 有了这个values id item 1 href google com icon google com id item 2 href youtube com icon youtube com id i