浅谈前端 | JavaScript对象和运算符

568 阅读6分钟

这是我参与更文挑战的第30天,活动详情查看: 更文挑战

微信公众号搜索【程序媛小庄】,领取全套python全栈教程,还有小庄整理的不断更新的电子书、面试资料等你来拿哦~

前言

js中难道没有像Python中的列表一样的数据类型吗?也没有字典吗?答案当然是有滴,请看小庄慢慢道来。

对象

JavaScript是一门面向对象的语言,一切皆对象同样适用于JavaScript,同时JavaScript也允许自定义对象。

数组对象

JavaScript中的数组类似于python中的列表,同样使用[]表示。

数组基本方法

var a = [11,'a',true];
typrof a; // "object"

// 支持索引取值,但是不支持负数索引
a[1]; // "a"


// 数组的长度:.length
a.length;  // 3

// 数组中追加值
a.push('chloe');
a; // (4) [11, "a", true, "chloe"]

// 数组删除值:pop(),n不写,默认删除最后一个元素,会返回删除的元素值;
a.pop();

// unshift():头部插入元素,返回当前数组的元素个数
a.unshift('false');  // 4
a  // (4) ["false", 11, "a", true]

// shift():头部移除元素,返回被移除的元素值
a.shift(); // "false"

// .slice(start,end):切片,识别负数
a.slice(0,2); // (2) [11, "a"]

// reverse():反转
a.reverse(); // (3) [true, "a", 11]

// .join():使用指定字符串拼接,内部会将数字转为字符串
var a = [true, "a", 11];
a.join(2); // "true2a211"


// concat():相当于python中列表的extend方法,返回扩展后的元组
a.concat([1,2,3]);  // (6) [true, "a", 11, 1, 2, 3]

// sort():排序
var a = [2,2,4,3];
a.sort();  // (4)[2,2,3,4]

重要方法 - forEach方法

// forEach(function(value,index,arr){console.log(value,index,arr)})
var a = [1,2,'a','c'];

// 只有一个value参数,显示数组中的元素值
a.forEach(function(value){console.log(value)});
/*
VM1274:2 1
VM1274:2 2
VM1274:2 a
VM1274:2 c
*/

// 两个参数value index,显示数组中的元素值及元素索引
a.forEach(function(value,index){console.log(value,index)});

VM1326:1 1 0
VM1326:1 2 1
VM1326:1 a 2
VM1326:1 c 3


// 三个参数value index arr,显示数组中的元素值及下标及元素来源
a.forEach(function(value,index,arr){console.log(value,index,arr)});

VM1340:1 1 0 (4) [1, 2, "a", "c"]
VM1340:1 2 1 (4) [1, 2, "a", "c"]
VM1340:1 a 2 (4) [1, 2, "a", "c"]
VM1340:1 c 3 (4) [1, 2, "a", "c"]

// 四个参数,value index arr  xx,显示数组中的元素值及下标及该数组及undefined
a.forEach(function(value,index,arr,xx){console.log(value,index,arr,xx)});

VM1372:1 1 0 (4) [1, 2, "a", "c"] undefined
VM1372:1 2 1 (4) [1, 2, "a", "c"] undefined
VM1372:1 a 2 (4) [1, 2, "a", "c"] undefined
VM1372:1 c 3 (4) [1, 2, "a", "c"] undefined

重要方法 - splice

// splice(start,num,data):三个参数,第一个是起始位置,第二个是删除个数,第三个删除后添加的数据

var a = [1,2,'a','c'];

// 两个参数的情况,第一个是起始位置,第二个是删除个数,返回删除的元素
a.splice(1,1);  // [2]
a; // (3) [1, "a", "c"]

// 三个参数,先删除后添加
// 删除后添加元素
a.splice(1,1,4); // [2]
a; //  [1,4,'a','c']
// 删除后添加数组
a.splice(1,1,[4,5]); // [2]
a;  // (4) [1, Array(2), "a", "c"]

重要方法 - map

// map(function(value,index,arr){return value }):对数组的元素值处理后,可以重新赋值给另一个变量,原数组不变

var a = [1,2,'a','c'];
res = a.map(function(value){return value+1}); // (4) [2, 3, "a1", "c1"]
a; // (4) [1, 2, "a", "c"]

自定义对象

JavaScript中的自定义对象就可以看成是Python中的字典,但是JavaScript中的自定义对象要比Python中的字典操作起来方便。

创建自定义对象方式一 - {}

// 创建自定义对象
var d = {'name':'chloe','age':18};

// 查看对象的类型
typeof d; // "object"

// 取值
d['name']; // "chloe"
d['age'];  // 18
d.name;  // "chloe"
d.age;  // 18

// 支持for循环取值,默认取到的值也是key
for (let i in d)
{
	console.log(i,d[i]);
};
/*
name chloe
age 18
*/

创建自定义对象方式二 - new

var d = new Object();  // {}

// 为对象中添加键值对的方式一
d['name'] = 'chloe';
// 添加键值对的方式二
d.age = 18;
d; // {name: "chloe", age: 18}

Date对象

let d = new Date();
d;  // 
Sat May 16 2020 08:38:28 GMT+0800 (中国标准时间)

// 将上述时间转换为较为方便观看的格式
d.toLocaleString(); // "2020/5/16 上午8:38:28"


// 支持手动输入时间
let d = new Date('2200/11/11 11:11:11');
d; // Tue Nov 11 2200 11:11:11 GMT+0800 (中国标准时间)
d.toLocaleString();  // "2200/11/11 上午11:11:11"

// 注意:月份是从0开始到11月
// 时间对象具体方法
let d6 = new Date();
d6.getDate()  获取日
d6.getDay()		获取星期
d6.getMonth()		获取月份(0-11)
d6.getFullYear()		获取完整的年份
d6.getHours()			获取小时
d6.getMinutes()		获取分钟
d6.getSeconds()		获取秒
d6.getMilliseconds()  获取毫秒
d6.getTime()	时间戳

划重点 - json对象

json是任何语言中都很重要的部分哦,用来实现不同语言之间的交互。

// 序列化,stringify()---相当于python中的dumps

let j = {'name':'chloe','age':18};
let res = JSON.stringify(j);
res;  // "{"name":"chloe","age":18}"

// 反序列化,parse() ----相当于python中的load
JSON.parse(res);  // {name: "chloe", age: 18}

Math对象

abs(x)      返回数的绝对值。
exp(x)      返回 e 的指数。
floor(x)    对数进行下舍入。
log(x)      返回数的自然对数(底为e)。
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次幂。
random()    返回 0 ~ 1 之间的随机数。
round(x)    把数四舍五入为最接近的整数。
sin(x)      返回数的正弦。
sqrt(x)     返回数的平方根。
tan(x)      返回角的正切。

运算符

算术运算符

JavaScript支持普通的+-×/运算。

++ :表示自增1,类似于 +=1
-- :与++用法一致

var x = 10;
// 先将x的值赋值给y,x在自增
var y = x++;
x; // 11
y; // 10

var x = 10;
// x先自增,然后自增后的x赋值给y
var y = ++x;
x; // 11
y; // 11

比较运算符

// == 弱等于,内部自动转换成相同的数据类型进行比较
1 == '1'; // true

// === 强等于,内部不做类型转换
1 === '1'; // false

// 案例
1 != '1'; // false
1 !== '1'; // true

逻辑运算符

短路运算的前提下:进行布尔值的且和或的运算。当运算到某一个值就得出最终结果之后,就返回哪个值。

and关系:&&
or关系:||
not关系:!

5 && '5';
'5'

0 || 11

!5 && '5';
false

结语

文章首发于微信公众号程序媛小庄,同步于掘金知乎

码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)

image.png