JavaScript——常用内置对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

此外I,JavaScript还提供多个内建对象,比如 Array,Date,Math 等等

对象只是带有属性和方法的特殊数据类型

一、数组对象Array

数组对象的作用是:使用单独的变量名来存储一系列的值。类似于Python中的列表

var x = ["egon", "hello"];
console.log(x[1]);  // 输出"hello"

常用方法:

方法 说明
.length 数组的大小
.push(ele) 尾部追加元素
.pop() 获取尾部的元素
.unshift(ele) 头部插入元素
.shift() 头部移除元素
.slice(start, end) 切片
.reverse() 反转
.join(seq) 将数组元素连接成字符串
.concat(val, ...) 连接数组
.sort() 排序
.forEach() 将数组的每个元素传递给回调函数
.splice() 删除元素,并向数组添加新元素。
.map() 返回一个数组元素调用函数处理后的值的新数组

二、

注意:

sort

//sort排序默认按字符编码顺序来排
var arr = [123,9,1211,11]
arr.sort() #[11, 1211, 123, 9]

//提供比较函数 ,以便让他按其他标准排序
function sortNumber(a,b){
    return a - b
}
var arr = [123,9,1211,11]
arr.sort(sortNumber) #[9, 11, 123, 1211]

forEach()

语法:
forEach(function(currentValue, index, arr), thisValue)
ps:无返回值
参数及描述:
currentValue 必需。当前元素
index  可选。当前元素的索引值
arr  可选。当前元素所属的数组对象
thisValue 可选。传递给函数的值 一般用"this"值,如果这个参数为空,"undefined"会传递给"this"值

map()

语法:
map(function(currentValue,index,arr), thisValue)ps:有返回值

参数及描述:
currentValue  必须。当前元素的值
index  可选。当期元素的索引值
arr  可选。当期元素属于的数组对象
thisValue  可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"

forEach vs map

forEach vs map:
1、forEach()返回值是undefined,不可以链式调用。
var res=arr.forEach(function(v,i,arr){
    console.log(v,i,arr);
    console.log(this[0]);
    return 123;
},"hello")
res # undefined

2、map()返回一个新数组,原数组不会改变
var res=arr.map(function(v,i,arr){
    v=v + 'SB'
    return v;
},"hello")

res #["aaSB", "bbSB", "ccSB", "ddSB", "eeSB"]

在使用forEach()时候,如果数组在迭代的视乎被修改,则其他元素会被跳过
var arr=[11,22,33,44,55]
arr.forEach(function(v){
    console.log(v);
    if (v === 33){
        arr.shift() // 下一次循环应该循环出第索引为3的元素,但此时一旦删除第一个元素,那么值55的索引变成了3
    }
})
11
22
33
55

反转字符串
var str = '12345';
Array.prototype.map.call(str, function(x) {   //同时利用了call()方法
  return x;
}).reverse().join('');

二、Date日期对象

创建日期对象只有构造函数一种方式,使用new关键字

//方法1:不指定参数
var d1 = new Date();
console.log(d1.toLocaleString());

//方法2:参数为日期字符串
var d2 = new Date("2018/01/27 11:12:13");
console.log(d2.toLocaleString());

var d3 = new Date("01/27/18 11:12:13"); // 月/日/年 时分秒
console.log(d3.toLocaleString());

//方法3:参数为毫秒数
var d4 = new Date(7000);
console.log(d4.toLocaleString());
console.log(d4.toUTCString());

//方法4:参数为:年,月,日,时,分,秒,毫秒
var d5 = new Date(2018,1,27,11,12,13,700);
console.log(d5.toLocaleString());  //毫秒并不直接显示
方法 含义
getDate() 根据本地时间返回指定日期对象的月份中的第几天(1-31)。
getMonth() 根据本地时间返回指定日期对象的月份(0-11)
getFullYear() 根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字)
getDay() 根据本地时间返回指定日期对象的星期中的第几天(0-6)
getHours() 根据本地时间返回指定日期对象的小时(0-23)
getMinutes() 根据本地时间返回指定日期对象的分钟(0-59)
getSeconds() 根据本地时间返回指定日期对象的秒数(0-59)
getMilliseconds() 根据本地时间返回指定日期对象的获取毫秒
getTime()
返回累计毫秒数(从1970/1/1午夜)

三、Math对象

方法 含义
Math.floor() 向下取整,如5.1取整为5
Math.ceil() 向上取整,如5.1取整为6
Math.max(a,b) 求a和b中的最大值
Math.min(a,b) 求a和b中的最小值
Math.random() 随机数,默认0-1之间的随机数,若想求min~max之间的数,公式为:min+Math.random()*(max-min)

四、JSON对象

// JSON格式的字符串转成对象
var str1='{"name":"egon","age":18}';

var obj1=JSON.parse(str1);
console.log(obj1.name);
console.log(obj1["name"]);

//  对象转成JSON字符串
var obj2={"name":"egon","age":18};

var str2=JSON.stringify(obj2);

五、RegExp对象

#1. 创建正则对象的方式1
// 参数1 正则表达式
// 参数2 匹配模式:常用g(全局匹配;找到所有匹配,而不是在第一个匹配后停止)和i(忽略大小写)
// 注意:正则放到引号内,{}内的逗号后面不要加空格
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); // 匹配用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。
reg1.test("egon_123") // true

#2. 创建正则对象的方式2
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/; // 不要加引号
reg2.test("egon_123") // true

#3. String对象与正则结合的4个方法
var s1="hello world";
s1.match(/l/g) // 符合正则的内容["l", "l", "l"]
s1.search(/h/g) // 符合正则的内容的索引0
s1.split(/ /) // ["hello", "world"]
s1.replace(/l/g,'L') // "heLLo worLd"

#4. 匹配模式g与i
var s2="name:Egon age:18"
s2.replace(/e/,"赢") // "nam赢:Egon age:18"
s2.replace(/e/g,"赢") // "nam赢:Egon ag赢:18"
s2.replace(/e/gi,"赢") //"nam赢:赢gon ag赢:18"

#5. 注意1:
// 1、如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找。
// 2、该属性值默认为0,所以第一次仍然是从字符串的开头查找。
// 3、当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。
// 4、当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。
// 5、因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。
// 6、如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。
var reg3 = /egon/g;
reg3.lastIndex
0
reg3.test("egon") // true,匹配成功
true
reg3.lastIndex // 匹配成功reg3.lasIndex=4
4

reg3.test("egon") // 从4的位置开始匹配,本次匹配失败
false

reg3.lastIndex // 匹配失败,lastIndex归为0
0

reg3.test("egon") // 再次匹配成功
true

#6. 注意2:
当我们不加参数调用RegExpObj.test()方法时, 相当于执行RegExpObj.test("undefined"), 并且/undefined/.test()默认返回true。
var reg4 = /^undefined$/;
reg4.test(); // 返回true
reg4.test(undefined); // 返回true
reg4.test("undefined"); // 返回true

六、自定义对象

# 可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加的方便

# 创建自定义对象 {}
"""第一种创建自定义对象的方式"""
var d1 = {'name':'jaa','age':18}

var d = {'name':'jaa','age':18}
typeof d
"object"

d['name']
"jaa"
d.name  # 比python从字典获取值更加的方便
"jaa"
d.age
18

for(let i in d){
  console.log(i,d[i])
}  # 支持for循环 暴露给外界可以直接获取的也是键

"""第二种创建自定义对象的方式  需要使用关键字 new"""
var d2 = new Object()  # {}

d2.name = 'jaa'
{name: "jaa"}

d2['age'] = 18
{name: "jaa", age: 18}
(0)

相关推荐

  • 遍历数组,对象和JSON

    遍历数组 var arr2 = [3,4,5,6,7,8]; //第一种方法 for(var i =0;i<arr.length;i++){ console.log(arr2[i]); } // ...

  • JS异步单线程与内置对象面试

    什么是异步? <script> //异步 console.log(1); setTimeout(function(){ alert(2); },1000); console.log(3); ...

  • 判断两个数组是否相同

    #region Test用的 static void Write列名Dic() { StreamWriter SW = new StreamWriter(MDIParent1.Root + @&quo ...

  • JavaScript的内置对象

    内置对象:对象是由属性和方法组成的,使用点语法访问 一,array数组 1. 特点: 数组用于存储若干数据,自动为每位数据分配下标,从0开始 数组中的元素不限数据类型,长度可以动态调整 动态操作数组元 ...

  • javascript内置对象的innerText、innerHTML、join方法的认识

    innerText语法规范:HTMLElement.innerText = string ;//后面的赋值是一个字符串形式 innerText是一个非标准形式,不识别HTML标签 返回值会去除空格和换 ...

  • Linux常用内置命令有哪些?Linux应该如何学习

    Linux里有一些特殊的命令,称为内置命令(直接内置在BASH解释器中),它们天生就与其他的普通命令不同,因为它们从系统启动成功的那一刻就已经在内存里安家了.当其他普通命令还在慢悠悠地从磁盘上读取程序 ...

  • python - 内置对象 之 变量

    一.变量命名规划 1.命名规则 (1)命名内容只能是字母.下划线.数字 (2)名字第1字符只能是字母或下划线 (3)区分大小写 2.私有变量 (1)_xxx "单下划线" 开始的成 ...

  • sed常用内置命令字符功能及参数选项 Linux运维

    sed常用内置命令字符有什么功能?sed是字符流编辑器,简称流编辑器:是操作.过滤和转换文本内容的强大工具.sed常用功能包括对文件实现快速增删改查,而常用的两大功能是过滤.取行.对于Linux运维人 ...

  • 【Asp.net】 七大内置对象

    本文主要分析Asp.net的7大内置对象. 利用提供的内置对象可以实现页面之间的数据传递和一些特定的功能,如数据输出,页面重定向等.5个核心常用内置对象分别是Application,Session, ...

  • 12个python数据处理常用内置函数

    简说Python 以下文章来源于python数据分析之禅 ,作者小dull鸟  简说Python推荐  来源|python数据分析之禅 作者|小dull鸟 在python数据分析中,经常需要对字符串进 ...

  • thymeleaf基础语法及内置对象

    在上一篇中已经讲解了thymeleaf的应用,下面再来介绍一下thymeleaf基础语法及内置对象与工具类.thymeleaf基础语法thymeleaf基础语法主要有以下四种:变量表达式${}选择变量 ...

  • 原生JS内置对象的字符串操作习题

    (一)获取字符串长度 console.log(str.length); // 33 (二)取出指定位置的字符,如:0,3,5,9等 console.log(str[0], str[3], str[5] ...