请求的数据类型{ }{[ ]} 解析

一、案例区别

1.1源码

var saveInBrowserDeviceInfoStr = localStorage.getItem('SaveInBrowserDeviceInfo');
var saveInBrowserDeviceInfo;if (saveInBrowserDeviceInfoStr) {console.log('存放在浏览器的设备信息(字符串):' + saveInBrowserDeviceInfoStr);saveInBrowserDeviceInfo = JSON.parse(saveInBrowserDeviceInfoStr);if (Object.keys(saveInBrowserDeviceInfo).length > 0) {console.log('存放在浏览器的设备信息(对象):' + JSON.stringify(saveInBrowserDeviceInfo));}
}var saveInBrowserDeviceInfoStr = localStorage.getItem('SaveInBrowserDeviceInfo');
var saveInBrowserDeviceInfo;if (saveInBrowserDeviceInfoStr) {console.log('存放在浏览器的设备信息(字符串):' + saveInBrowserDeviceInfoStr);saveInBrowserDeviceInfo = JSON.parse(saveInBrowserDeviceInfoStr);if (saveInBrowserDeviceInfo.length > 0) {console.log('存放在浏览器的设备信息(对象):' + saveInBrowserDeviceInfo);}
}

1.2返回数据类型

1.2.1键值对的对象

{

"deviceIdOnly": "E01",

"deviceMac": "88888888",

"deviceName": "设备名",

"devicePosition": "教室",

"deviceRemark": "我的测试硬件",

"localIp": "147.147.174.22",

"networkWifi": "网络",

"publicIp": "127.0.0.1",

"userEmail": "123a@ggb.top"

}

1.2.2存对象的数组

[{"idPromise":"","fileName":"2otEhB6er/test/test11.mp3","songName":"当你老了","artistName":"李健","coverImage":"2otEhB6er/test/test11.jpg"},{"idPromise":"","fileName":"2otEhB6er/test/test22.mp3","songName":"月半小夜曲","artistName":"李克勤","coverImage":"2otEhB6er/test/test22.jpg"},{"idPromise":"","fileName":"2otEhB6er/test/test33.mp3","songName":"老街","artistName":"李荣浩","coverImage":"2otEhB6er/test/test33.jpg"},{"fileName":"1bTp41xz/32b2404101041305228242好妹妹-晚安.mp3","songName":"晚安","artistName":"好妹妹","coverImage":"1mEY6b01e/32b2404101041143762030mmexport1712658610949.jpg","idPromise":"71"}]

 1.3说明

这两段源码的区别在于它们如何检查 saveInBrowserDeviceInfo 是否包含数据,并且它们期望 saveInBrowserDeviceInfo 的数据类型不同。

第一段代码使用了 Object.keys(saveInBrowserDeviceInfo).length 来检查 saveInBrowserDeviceInfo 对象是否包含键值对,从而确定对象是否为空。这段代码期望 saveInBrowserDeviceInfo 是一个对象。

第二段代码使用了 saveInBrowserDeviceInfo.length 来检查 saveInBrowserDeviceInfo 数组的长度是否大于 0,从而确定数组是否为空。这段代码期望 saveInBrowserDeviceInfo 是一个数组。

因此,这两段代码的区别在于它们期望的数据类型不同。根据你之前提供的信息,saveInBrowserDeviceInfo 是一个对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄仁勋最新访谈:GPU性能的革命性提升与AI未来

近期,英伟达CEO黄仁勋与美国CNBC知名主持人、股评人吉姆克莱默(Jim Cramer)在《Mad Money》节目中展开了一场关于技术未来和人工智能的对话。访谈里,黄仁勋不仅提到了英伟达在过去八年中将AI算力性能提高1000倍,还预言…

程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务

程序中调用DB过程要注意这种情况: 有些存储过程需要执行比较久,在数据库中直接跑本身没有出错,但从程序中调用该存储过程会由于超时进入程序异常处理,这时数据库后台依然在跑着该存储过程,如果该存储过程中有启用事务…

Linux:如何删除指定时间之前修改的文件

1、与文件有关的时间 在说明如何删除符合这种要求的文件之前,先来看看与文件有关的有哪些时间 简名全名中文名含义atimeaccess time访问时间文件中的数据最后被访问的时间mtimemodify time修改时间文件中的数据最后被修改的时间ctime change time变化时间文件的元…

对装饰器模式的理解

目录 一、场景二、面对场景中的新需求,我们怎么办?1、暴力法:直接修改原有的代码。2、子类继承法:既然要增强行为,那我搞一个子类,覆写不就完事了?3、装饰器模式 三、对装饰器模式的思考1、从代…

Rust---泛型(Generics)

目录 泛型和多态泛型参数泛型的使用结构体中使用枚举中使用方法中使用函数中使用为特定的类型参数提供特定的方法实现泛型和多态 泛型允许在编写代码时使用抽象类型来代替具体类型,可以在不同的数据类型上工作,同时避免代码重复。通过泛型,我们可以编写一次代码,然后在需要…

AI编程工具助手

随着人工智能技术的发展,AI编程工具助手应运而生。 AI编程工具助手通过利用人工智能技术,尤其是机器学习和自然语言处理,来辅助软件开发过程中的代码编写、调试、优化等工作。这些工具通过提供代码补全、代码生成、代码审查、性能优化等功能…

Linux中进程和计划任务

一.程序 1.什么是程序 (1)是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具 (2)用于描述进程要完成的功能,是控制进程执行的指令集 二.进程 1.什么是进程…

Go 单元测试之HTTP请求与API测试

文章目录 一、httptest1.1 前置代码准备1.2 介绍1.3 基本用法 二、gock2.1介绍2.2 安装2.3 基本使用2.4 举个例子2.4.1 前置代码2.4.2 测试用例 一、httptest 1.1 前置代码准备 假设我们的业务逻辑是搭建一个http server端,对外提供HTTP服务。用来处理用户登录请求…

eNSP 静态路由综合实验

eNSP静态路由综合实验涉及的知识点包括但不限于:IP地址配置、环回地址配置、合理进行子网汇总、缺省路由、空路由接口、浮动静态路由、ACL表规则撰写、动态NAT网络地址转换、端口映射、远程登陆等。在实验过程中,可能需要根据给定的拓扑结构和要求&#…

Flume配置案例@Source:端口,Channel:内存,Sink:控制台

vim /opt/module/flume/job/port_to_console.conf ------------------------- 在nc-flume-log.conf文件中添加如下内容。 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1# Describe/configure the source a1.sources.r1.type netcat a1.so…

XGB-26:model

切片树模型|Slice tree model 当XGBoost中的 booster 参数设置为 gbtree 或 dart 时,算法构建了一个由多棵树组成的树模型。这个树模型可以被切片成多个子模型,每个子模型包含原始模型中一部分树。这个切片过程允许创建更小、更专业的模型,专…

每日OJ题_01背包④_力扣1049. 最后一块石头的重量 II

目录 力扣1049. 最后一块石头的重量 II 问题解析 解析代码 滚动数组优化代码 力扣1049. 最后一块石头的重量 II 1049. 最后一块石头的重量 II 难度 中等 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从…

数字乳腺癌组织病理学图像分类的Vision Transformer及其变体

Vision Transformer作为一种基于自注意力机制的高效图像分类工具被提出。近年来出现了基于Poolingbased Vision Transformer (PiT)、卷积视觉变压器(CvT)、CrossFormer、CrossViT、NesT、MaxViT和分离式视觉变压器(SepViT)等新模型。 它们被用于BreakHis和IDC数据集上的图像分…

软件项目管理 - PERT 图

文章目录 1 概述1.1 PERT 图1.2 基础概念 2 相关计算2.1 最早时刻2.2 最迟时刻2.3 关键路径2.4 松弛时间 1 概述 1.1 PERT 图 PERT:Program Evaluation and Review Technique(项目评估与评审技术) PERT 图是一个有向图,图中的箭…

【C++造神计划】数学运算

​ 数学运算库 //二者选一 #include <cmath> #include <math.h>// #include <math.h> #include <cmath> #include <stdio.h>int main() {float res;res sqrt(2);res abs(-5.3);res sin(0.5*M_PI);res asin(res);res cos(0.5*M_PI);res a…

通过Dockerfile 创建 kali-novnc

创建Dockerfile # 使用官方Kali镜像作为基础镜像 FROM kalilinux/kali-rolling# 设置工作目录 WORKDIR /app# 将当前目录下的所有文件复制到工作目录中 COPY ./run.sh .# 安装项目依赖 RUN apt update -y RUN apt upgrade -y RUN apt install dbus-x11 xfce4 tightvncserver …

【c++】stack和queue使用 stack和queue模拟实现

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1. stack的介绍和使用 1.1 stack的介绍 1.2 stack的使用 1.3 stack的模拟实现 2. queue的介绍和使用 2.1 queue的介绍 2.2 queue的…

Unity中使用NewtonJson序列化继承类时报错解决方法参考

在Unity中使用NewtonJson时&#xff0c;如果要序列化的类继承了别的类&#xff0c;可能报如下错误&#xff1a; JsonSerializationException: Self referencing loop detected for property...... 解决的方法是新建一个JsonSerializerSettings对象&#xff0c;并设置对象的Ref…

Golang面试题五(GC)

目录 1.Golang GC版本 2.常见的垃圾回收算法有以下几种 3.怎么找到程序中无用的对象 引用计数法 根搜索法 GC roots对象 4.java与go的GC对比 5.三色标记法 1.Golang GC版本 Go 1.3版本&#xff1a;普通标记清除法&#xff0c;整体过程需要启动STW&#xff0c;效率极低。…