php 获取 js json数据类型,JS基础-JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换...

JS的数据类型和访问/流程控制/JSON格式字符串和js对象相互转换

1. JS的数据类型和访问

1.1. 原始类型JS中的原始数据类型有: number , string , boolean ;

声明变量使用 var 关键字.

/* 数字类型 */

varyear=2020;

/* 字符串类型 */

varname='zhangsan';

/* 布尔类型 */

varisUpdate=false;

获取变量的数据类型使用 typeof . 使用方式: typeof 变量名 .

varsite='php.cn';

// 使用typeof来获取变量的数据类型

vardataType=typeofsite;

document.write(dataType);

/* result: string */

1.2 特殊类型JS中两个特殊的值类型: null , undefined .

当只声明变量, 没有初始化变量值时, 此时变量的值是 undefined . 即, var param; 等效于 var param = undefined; .

varparam;

document.write(param);

/* result: undefined */

varparam1=null;

document.write(param1);

/* result: null */

特别的: null == undefined 返回的是 true ; 而 null === undefined 则返回 false

document.write(null==undefined);

/* result: true */

document.write(null===undefined);

/* result: false */

null 和 undefined 的区别: null 表示空对象; undefined 表示非对象类型的变量值为空/无.

// 获取null的数据类型

vardataType=typeofnull;

document.write(dataType);

/* result: object */

null / undefined 转换为原始类型数据的值

null / undefined 转换为布尔值, 值转为为 false ;

if(!null)document.write('我被输出了
');

if(!undefined)document.write('我被打印了');

/* result:

我被输出了

我被打印了 */

null / undefined 转换为字符串时, 值转为: "null" / "undefined" .

document.write(null+'
');

document.write(undefined+'
');

/* result:

null

undefined */

null 转为数值时, 值为: 0 ; undefined 则不能转为数字(输出: NaN).

document.write(null+100);

document.write(undefined+100);

/* result:

100

NaN

*/

1.3 对象类型: array , object , function在js中, 除开 null 和 undefined , 所有数据类型都是对象, 包括原始类型.

// 证明原始类型数据也是对象: 都能通过他们调用内置方法

varnum=3.1415926;

varname='zhangsan';

// 把num的值四舍五入, 保留3位小数

console.log(num.toFixed(3));

console.log(name.toUpperCase());

/* result:

3.142

ZHANGSAN

*/

1.3.1 数组类型JS中的数组跟PHP中的索引数组类似

// 定义数组

varplayer=['James','Davis','Green','Rondo','Kuzma'];

document.writeln(player);

/* result: James,Davis,Green,Rondo,Kuzma James */

// 获取数组的中的元素

document.writeln(player[0]);

/* result: James */

判断变量是否为数组类型, 用 Array.isArray(变量名) , 因为 typeof 变量名 的返回值是 object , 不够具体.

// 定义数组

varplayer=['James','Davis','Green','Rondo','Kuzma'];

document.writeln('"typeof player" 的值是:'+(typeofplayer));

document.writeln('变量"player"的值'+(Array.isArray(player)?'是':'不是')+'数组');

/* result:

"typeof player" 的值是:object

变量"player"的值是数组

*/

数组循环

for 循环

varplayer=['James','Davis','Green','Rondo','Kuzma'];

for(varindex=0;index

document.write(player[index]+", ");

}

/* result: James, Davis, Green, Rondo, Kuzma, */

forEach 循环

使用格式: array.forEach(function(当前遍历到的元素, 当前遍历到的元素在数组中的索引[可选], 受遍历的数组[可选]) {...})

varplayer=['James','Davis','Green','Rondo','Kuzma'];

player.forEach(function(p,index){

document.write("第"+(index+1)+"位出场的是"+p+'
');

});

/*

第1位出场的是James

第2位出场的是Davis

第3位出场的是Green

第4位出场的是Rondo

第5位出场的是Kuzma

*/

数组函数

array.slice 函数

用法: targetArr.slice(起始位置, 结束位置 + 1) : 获取JS数组中的”起始位置”到”结束为止”之间的元素

varplayer=['James','Davis','Green','Rondo','Kuzma'];

// 返回前3个球员

document.write(player.slice(0,3));

/* result : James,Davis,Green */

array.splice 函数

类似PHP中的数组函数 splice , 可以用它实现对数组元素的增删改.

使用语法: array.splice(起始位置, 元素个数[可选], 替换元素1[可选], 替换元素2[可选]...) ; 其中 替换元素1, 替换元素2... 可以以数组的形式传入: [替换元素1, 替换元素2...]

实现向当前数组中插入元素: targetArr.splice(起始位置, 0, 插入元素1, 插入元素2...)

varplayer=['James','Davis','Green','Rondo','Kuzma'];

// 在Davis后面插入Bradley, McGee

player.splice(2,0,['Bradley','McGee']);

document.write(player);

/* result: James,Davis,Bradley,McGee,Green,Rondo,Kuzma */

-2.实现删除当前数组中的元素:`targetArr.splice(起始位置, 元素个数)`

varplayer=['James','Davis','Green','Rondo','Kuzma'];

// 删除Green, Rondo

player.splice(2,2);

document.write(player);

/* result: James,Davis,Kuzma */

-3.实现更新当前数组中元素的值:`targetArr.splice(起始位置, 元素个数, 替换后的值1, 替换后的值2[可选]...)`

varplayer=['James','Davis','Green','Rondo','Kuzma'];

// 把Davis, Green, Rondo更新为中文名

player.splice(1,3,['戴维斯','格林','隆多']);

document.write(player);

/* result: James,戴维斯,格林,隆多,Kuzma */

1.3.2 对象JS中的对象跟PHP中的关联数组相似.

定义对象

// 创建对象-1

varplayer1={

name:'James',

team:'湖人',

age:35,

// JS中, 如果属性名含有非法字符, 则用双引号 `"` 将其括起来

"player info":{

height:'203',

weight:'113',

position:'F-G'

}

};

// 以表格的形式打印对象

console.table(player1);

// 另一种定义对象属性的方式见下面的例子

执行结果:

james.png

访问对象属性, 有两种方式一种是: 对象名.属性名 ; 另一种是类似PHP中的关联数组: 对象名[属性名] . 还有非法字符的属性名, 只能用第二种方式访问.

// 创建对象-2

varplayer2={};

player2.name="James";

player2.team='湖人';

player2.age=35;

player2["player info"]={

height:'203',

weight:'113',

position:'F-G'

};

// 访问对象属性

document.write('姓名:'+player2.name+'
');

document.write('球队:'+player2.team+'
');

document.write('年龄:'+player2['age']+'
');

document.write('身高:'+player2['player info'].height+'
');

document.write('体重:'+player2['player info']['weight']+'
');

document.write('司职:'+player2['player info']['position']+'
');

/*

姓名:James

球队:湖人

年龄:35

身高:203

体重:113

司职:F-G

*/

遍历对象属性

遍历对象方法1: 使用 for 属性名 in 对象 . 语法: for(对象键名 in 对象), 在遍历中, 用 对象名["属性名"] 的方式获取元素值更稳一些, 避免出现非法字符遍历报错.

varplayer1={

name:'James',

team:'湖人',

age:35,

// JS中, 如果属性名含有非法字符, 则用双引号 `"` 将其括起来

"player info":{

height:'203',

weight:'113',

position:'F-G'

}

};

// for...in...遍历对象属性.

for(prop in player1){

varvalue=player1[prop];

if(typeofvalue!='object')

document.write(prop+': '+value+'
');

else// 如果属性值是对象, 继续遍历

for(prop1 in value){

varvalue1=value[prop1];

document.write(prop1+': '+value1+'
');

}

}

/* result

name: James

team: 湖人

age: 35

height: 203

weight: 113

position: F-G

*/

遍历对象方法2: 使用 Object.keys(对象) 获取对象的属性名组成的数组, 再借助数组的 forEach 进行遍历.

varplayer1={

name:'James',

team:'湖人',

age:35,

// JS中, 如果属性名含有非法字符, 则用双引号 `"` 将其括起来

"player info":{

height:'203',

weight:'113',

position:'F-G'

}

};

// 获取属性名数组

varprops=Object.keys(player1);

props.forEach(function(prop){

varvalue=player1[prop];

if(typeofvalue!='object')

document.write(prop+': '+value+'
');

else{

// 如果属性值是对象, 继续遍历

varprops1=Object.keys(value);

props1.forEach(function(prop1){

varvalue1=value[prop1];

document.write(prop1+': '+value1+'
');

});

}

});

/* result:

name: James

team: 湖人

age: 35

height: 203

weight: 113

position: F-G

*/

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

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

相关文章

在matlab中使用spm8,在matlab中同时使用spm2,spm5,spm8

1、设置好spm2,spm5,spm8的路径。例如,都放置在“D:\Analysis_Software”2、新建一个文件夹spm_paths,用于放置调用spm2,spm5,spm8的*.m文件3、将spm_paths在matlab中进行setpath4、调用文件编写如下&#…

matlab 打开软件报错,matlab程序错误,提示如下【弄了半夜还是不行】 - 数学 - 小木虫 - 学术 科研 互动社区...

function [x,y,Y]levydistrintheorytest(t0,lambda,T,a,b);% 计算理论的二维levy分布的图象 画出来的3维曲面图% t0 :levy walk 趋于零的时间% lambda :幂律值% T:时间% a: 离散的大步长的最大值% b:小步长的最大值e…

php 上传根目录不存在,Linux 下 ---ThinkPHP 图片上传提示:上传根目录不存在!请尝试手动创建...

2016年11月15日11:15:47Windows下如果碰到如此问题,要看文件保存根路径里的rootpath,比如ThinkPHP框架里config.php文件里的的参数配置://文件上传相关配置‘UPLOAD_CONFIG‘ > array(‘mimes‘ > ‘‘, //允许上传的文件MiMe类型‘max…

mysql二级缓存,mybatis的动态sql和二级缓存

mybatis的#{}和${}的区别就像是 PreparedStatement 和statement , 使用${}接收的参数还需用Param注解修饰 , 推荐用#{}动态SQLMyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如…

mysql查找表shoe table,mysql命令行常用命令

mysql服务的启动和停止net stop mysqlnet start mysql登陆mysql服务器mysql -u用户名 -p用户密码注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP增加新用户grant 权限 on 数据库.* to 用户名登录主机 identified by “密码”如&#…

java long bigdecimal,通过Java中的long创建BigDecimal值

让我们看看如何通过long创建BigDecimal值。在这里,我们将长值设置为BigDecimal构造函数的参数。BigDecimal val1 BigDecimal.valueOf(289L);BigDecimal val2 BigDecimal.valueOf(299L);我们还可以对其执行数学运算-val2 val2.subtract(val1);以下是一个例子-示例…

python 数据挖掘论文,Orange:一个基于 Python 的数据挖掘和机器学习平台

Orange 简介Orange 是一个开源的数据挖掘和机器学习软件。Orange 基于 Python 和 C/C 开发,提供了一系列的数据探索、可视化、预处理以及建模组件。Orange 拥有漂亮直观的交互式用户界面,非常适合新手进行探索性数据分析和可视化展示;同时高级…

php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?

原标题:心理学中的“5大心理学测评量表”你知道多少?心理学知识中涵盖了类型丰富的心理学测评量表,你知道其中的多少呢?1、《应对方式问卷》《应对方式问卷》由肖计划等人参照国内外应对研究的问卷内容以及有关应对理论&#xff0…

php获取表单内的值,PHP获取表单里各项值总结

表单提交的方式1、GET方式功能:获取get方式提交的数据格式:$_GET[“formelement”]2、POST方式功能:获取post方式提交的数据格式:$_POST[“formelement”]3、REQUEST方式功能:获取任意方式提交的数据格式:$…

php对象魔术方法,php学习之类与对象的魔术方法的使用

原标题:php学习之类与对象的魔术方法的使用魔术方法有哪些__construct:构造方法__destuct:析构方法__call:在对象中调用一个不可访问的方法时。__call()会被调用__callStatic:__get:调用不可访问的属性__se…

oracle 执行sql,Oracle动态执行SQL

方式1CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AScursor_name INTEGER;rows_processed INTEGER;BEGINcursor_name : dbms_sql.open_cursor;dbms_sql.parse(cursor_name, DELETE FROM emp WHERE sal > :x,dbms_sql);dbms_sql.bind_variable(cursor_name, :x, sal…

oracle 满足条件取第一行,sql – 如何只选择满足条件的第一行?

您可以使用分析查询:select *from (select p.*, v.*,row_number() over (partition by p.id order by v.userid) as rnfrom prmprofile pjoin user v on v.profile p.idwhere p.language 0and v.userid like %TEST%)where rn 1;内部查询获取所有数据(但使用*不理…

Linux怎么把目录设置群组,linux设置目录和文件使用权限

ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置。ext2fs文件系统中的目录及文件,可依实际需要来设置可读取、可写入与可执行等权限。以下我们就来了解文件和目录的权限设置&#…

linux异常关机内存,linux关机及问题解决

一般linux关机会用到的命令就是shutdown命令shutdown命令在执行的时候会自动去调用sync这个工具,这个工具的作用是把内存里面的东西写入硬盘。不过为了安全,一般我们在执行shutdown命令的时候都用去执行几次sync这个命令。shutdown -k noticesshutdown -…

linux查看redis内存,Linux查看redis占用内存的方法

redis-cliauth 密码info# Memoryused_memory:13490096 //数据占用了多少内存(字节)used_memory_human:12.87M //数据占用了多少内存(带单位的,可读性好)used_memory_rss:13490096 //redis占用了多少内存used_memory_peak:15301192 //占用内存的峰值(字节)used_memor…

linux子进程父进程例子,linux 子进程访问父进程

问题分析ECS Linux 系统下 Apache 的默认工作模式是 prefork MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。如果不做调整,访问量增大可能造成 A…

linux 查看进程的信号,Linux 进程信号查看与控制

Linux 进程信号查看与控制1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出通常是在终端的控制进程结束时通知同一 session 内的各个作业这时它们与控制终端不再关联?2) SIGINT 程序终止 (interrupt) 信号在用户键入 INTR 字符 (通常是 Ctrl-C) 时发出?3) SIGQUIT …

linux查看发起ddos攻击的ip,在Linux上使用netstat命令查证DDOS攻击的方法

导读DOS攻击或者DDOS攻击是试图让机器或者网络资源不可用的攻击。这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器。服务器出现缓慢的状况可能由很多事情导致,比如错误的配置,脚本…

linux还原windows,双系统如何删除Linux,恢复Windows从  MBR引导启动?

双系统如何删除Linux,恢复Windows从MBR引导启动?现在愿意尝试Linux的人越来越多了。通常,如果一台电脑里已经装有了Windows,再装Linux,安装时,Linux的grub引导程 序就会覆盖掉保存在MBR当中的原来的Windows…

linux ftp下载函数函数,FTP下载的函数

最近写的一个到指定FTP下载服务器上下载的函数,主要用到类有CInternetSession,CFtpConnection具体内容看代码吧,这个不能的!虽然很简单,不值得往外写,但我想收藏起来留着以后用也是很有意义的。/*********************…