JavaScript String、RegExp、Array、Error、JSON 对象

目录

String 字符串对象

RegExp 正则对象

Array 数组对象

数组迭代遍历

二维数组

Error 异常对象

JSON 对象

JSON 语法

JSON 对象 CRUD

异常处理:XML Parsing Error:not well-formed


String 字符串对象

JavaScript String 对象 | 菜鸟教程

1、String(字符串)是 JavaScript 的一种基本的数据类型。String 对象的 length 属性声明了该字符串中的字符数。String 类定义了大量操作字符串的方法,例如从字符串中提取字符或子串,或者检索字符或子串。

2、需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。

3、创建 String 对象的语法:

1、var str = new String(s);// s 是要存储在 String 对象中或转换成原始字符串的值。
2、var str = String(s);
3、var str = "hello world"; --通常的简写方式
返回值:当 String() 和运算符 new 一起作为构造函数使用时,它返回一个新创建的 String 对象,存放的是字符串 s 或 s 的字符串表示。
当不用 new 运算符调用 String() 时,它只把 s 转换成原始的字符串,并返回转换后的值。

4、字符串比较。JavaScript 的字符串比较直接使用 "=="即可,而不用像 Java 一样使用 equale 方法

    let str1 = "123";
    let str2 = String("123");
    let int1 = 123;
    console.log(str1 == str2); // true
    console.log(str1 == int1); // true
String 对象常用方法
方法描述
charAt(index)返回在指定位置的字符。
charCodeAt(index)返回在指定的位置的字符的 Unicode 编码。
endsWith()

判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。

如果传入的子字符串在搜索字符串的末尾则返回 true,否则将返回 false。

fromCharCode(n1, n2, ..., nX)将 Unicode 编码转为字符。
indexOf(searchvalue,start)返回某个指定的字符串值在字符串中首次出现的位置。
includes(searchValue, start)方法用于判断字符串是否包含指定的子字符串。如果找到匹配的字符串则返回 true,否则返回 false。区分大小写.
lastIndexOf(searchvalue,start)从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
match(regexp)

查找找到一个或多个正则表达式的匹配。regexp是规定要匹配的模式的 RegExp 对象。

1、如果 regexp 没有标志 g,那么 match() 方法就只会执行一次匹配,否则匹配多次。匹配到时返回一个数组,如果匹配到时返回 null。

2、/g 表示是否匹配多次,/i 表示是否忽略大小写。

repeat(count)复制字符串指定次数,并将它们连接在一起返回。
replace(searchvalue,newvalue)

在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串。

1、searchvalue 可以是普通字符串,也可以是正则对象。

replaceAll(regexp|substr, newSubstr|function)用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,该函数会替换所有匹配到的子字符串。
search(searchvalue)用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。返回匹配到的起始位置,如果没有找到任何匹配的子串,则返回 -1。
slice(start,end)

提取字符串的片断,并在新的字符串中返回被提取的部分。

1、start:必须。要抽取的片断的起始下标,第一个字符位置为 0。如果为负数,则从尾部开始截取。
2、end:可选。要截取的片段结尾的下标(不包含)。若未指定,则提取start(包含)到结尾全部。

split(separator,limit)

把字符串分割为字符串数组。不改变原始字符串。

1、separator:可选。字符串或正则表达式,从该参数指定的地方分割。
2、limit:可选。指定返回的数组的最大长度,返回的子串不会多于这个参数指定的数组。
3、返回的数组中的字串不包括 separator 自身。
4、如果把空字符串("")用作 separator,那么每个字符之间都会被分割。

startsWith(searchvalue, start)

用于检测字符串是否以指定的子字符串开始。大小写敏感。

start表示查找的开始位置,默认为 0。

substr(start,length)

在字符串中抽取从 开始 下标开始的指定数目的字符。方法不会改变源字符串。没有截取到时返回空字符串。

1、start:必需。起始下标,必须是数值。如果是负数,则从尾部开始算起,如-1指字符串中最后一个字符,-2 指倒数第二个字符。
2、length:可选。截取的长度。必须是数值。如果省略,则截取开始位置到结尾的全部。

substring(from, to)用于提取字符串中介于两个指定下标之间的字符。
1、from(包含):必需。起始索引位置,非负整数。
2、to(不包含):可选。结束索引位置,非负整数。省略时表示截取到起始位置后面的全部。
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。
trim()法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。不会改变原始字符串。不适用于 null, undefined, Number 类型。

演示源码: src/main/resources/static/StringTest.html · 汪少棠/web_app - Gitee.com

RegExp 正则对象

JavaScript RegExp 对象 | 菜鸟教程

1、正则表达式是描述字符模式的对象,用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

语法var patt = new RegExp(pattern,modifiers);
或者
var patt = /pattern/modifiers;

1、pattern(模式):描述了表达式的模式
2、modifiers(修饰符):用于指定全局匹配、区分大小写的匹配和多行匹配。

i - 修饰符是用来执行不区分大小写的匹配。

g - 修饰符是用于执行全文的搜索(而不是在找到第一个就停止查找,而是找到所有的匹配)。

m - 执行多行匹配。

当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。比如,以下是等价的:
var re = new RegExp("\\w+");
var re = /\w+/;
test(searchvalue)搜索字符串指定的值,根据结果并返回真或假。
exec(searchvalue)检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
toString()

返回正则表达式的字符串值。

let regExp2 = new RegExp("\\d{3,}");
console.log(regExp2.toString());///\d{3,}/

global判断是否设置了 "g" 修饰符
ignoreCase判断是否设置了 "i" 修饰符

src/main/resources/static/RegExpTest.html · 汪少棠/web_app - Gitee.com

Array 数组对象

JavaScript Array 对象 | 菜鸟教程

1、Array 对象用于在单个的变量中存储多个值,js 的 Array 如同 Java 的 list 一样,它的长度是可以自动调整的。创建 Array 对象的语法:

var cars = new Array();
var cars = new Array(size);
var cars = new Array(element0, element1, ..., elementn);
var cars = ["Saab", "Volvo", "BMW"];

2、参数 size 是期望的数组元素个数,length 属性将被设为 size 的值。

3、参数 element ..., elementn 是参数列表,当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值,它的 length 属性也会被设置为参数的个数。

4、如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0,可以后面使用 length() 方法进行设置长度。

5、当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。

Array 对象属性
属性描述
length

1)设置或返回数组中元素的数目。语法:arrayObject.length。数组的 length 属性总是比数组中定义的最后一个元素的下标大 1。数组的 length 属性在用构造函数 Array() 创建数组时被初始化。
2)给数组添加新元素时,如果实际的元素个数超过 length,则将自动更新 length 的值。
3)设置 length 属性可改变数组的大小,如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined。

    let arr = [1, 2, 3, 4, 5];
    console.log("原始数组——>" + arr.toString());// 1,2,3,4,5
    arr.length = 3;//此时元素 4,5会被删除
    console.log("arr1=" + arr.toString());// 1,2,3
    arr.length = 0;//此时整个数组的值会被删除
    console.log("arr2=" + arr.toString());//
    arr.length = 2;//此时数组长度重新设置为2,但是无元素
    console.log("arr3=" + arr.toString());// ,
    //虽然此时设置的 length 属性值为2,但是添加的元素的个数超过时,length 会自动更新确保元素添加成功
    arr[0] = 10, arr[1] = 20, arr[2] = 30, arr[3] = 40, arr[4] = 50;
    console.log("arr4=" + arr.toString());// 10,20,30,40,50
Array 对象方法
方法描述
concat()连接两个或更多的数组,并返回结果。
copyWithin()从数组的指定位置拷贝元素到数组的另一个指定位置中。
entries()返回数组的可迭代对象。
every()检测数值元素的每个元素是否都符合条件。
fill()使用一个固定值来填充数组。
filter()检测数值元素,并返回符合条件所有元素的数组。蚩尤后裔
filter(function(currentValue,index,arr), thisValue)

创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

filter() 不会对空数组进行检测,不会改变原始数组。

find()返回符合传入测试(函数)条件的数组元素。
findIndex()返回符合传入测试(函数)条件的数组元素索引。
forEach()数组每个元素都执行一次回调函数。
from()通过给定的对象中创建一个数组。
includes()判断一个数组是否包含一个指定的值。
indexOf()搜索数组中的元素,并返回它所在的位置。
isArray()判断对象是否为数组。
join()把数组的所有元素放入一个字符串。
keys()返回数组的可迭代对象,包含原始数组的键(key)。
lastIndexOf()返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
map(function(currentValue,index,arr), thisValue)

通过指定函数处理数组的每个元素,并返回处理后的数组。

按照原始数组元素顺序依次处理元素,不会对空数组进行检测,不会改变原始数组。

array.pop()删除数组的最后一个元素并返回删除的元素。
push(item1, item2, ..., itemX)向数组的末尾添加一个或更多元素,并返回新的长度。
reduce()将数组元素计算为一个值(从左到右)。
reduceRight()将数组元素计算为一个值(从右到左)。
reverse()反转数组的元素顺序。
array.shift()删除并返回数组的第一个元素。
slice()选取数组的的一部分,并返回一个新数组。
some()检测数组元素中是否有元素符合指定条件。
sort()对数组的元素进行排序。
splice()从数组中添加或删除元素。
toString()把数组转换为字符串,并返回结果。
unshift(item1,item2, ..., itemX)向数组的开头添加一个或更多元素,并返回新的长度。
valueOf()返回数组对象的原始值。

数组迭代遍历

1、forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数,forEach() 对于空数组是不会执行回调函数的。语法:array.forEach(function(currentValue, index, arr), thisValue)

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

2、for...of 可以迭代任何可以迭代的对象,如 数组、类数组、maps、sets、DOM 集合、string,类似 Java 的增强型 for 循环. 

    let arrays = [10, 20, 30, 40, 50];
    console.log("-------普通 for 循环-------");
    for (let i = 0; i < arrays.length; i++) {
        console.log((i) + " = " + arrays[i]);
    }
    console.log("-------增强 for 循环-------");
    let count = 0;
    for (let valueLoop of arrays) {
        console.log((count++) + " = " + valueLoop);
    }
    console.log("-------forEach 循环-------");
    arrays.forEach(function (value, index) {
        console.log(index + "=" + value);
    });

src/main/resources/static/ArrayTest.html · 汪少棠/web_app - Gitee.com

二维数组

1、JavaScript 没有直接创建二维数组的功能,但是可以用一维数组间接创建,即将一维数组的值也设置为数组即可。

    console.log("-------二维数组-------");
    let oneSize = 3;//行数
    let towSize = 5;//列数
    let arr = [];//为它的子元素创建数组。大小不指定时,后期添加时会自动扩展。
    for (let i = 0; i < oneSize; i++) {
        arr[i] = [];
        for (let j = 0; j < towSize; j++) {
            arr[i][j] = (i + 1) + "" + (j + 1);
        }
    }
    console.log(arr);
    console.log("-----------普通 for 循环取值---------");
    // 普通 for 循环取值
    for (let i = 0; i < oneSize; i++) {
        for (let j = 0; j < towSize; j++) {
            console.log("(" + i + "," + j + ")", arr[i][j]);
        }
    }
    console.log("-----------for...of 迭代取值---------");
    // for...of 迭代取值
    for (let row of arr) {
        for (let col of row) {
            console.log(col);
        }
    }

src/main/resources/static/ArrayTest.html · 汪少棠/web_app - Gitee.com

Error 异常对象

JavaScript 错误 – Throw、Try 和 Catch | 菜鸟教程

1、Error 对象在错误发生时提供了错误的提示信息。当错误发生时,JavaScript 引擎通常会停止,并生成一个错误消息。

2、关键字如下:

try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。

属性描述
name设置或返回一个错误名
message设置或返回一个错误信息(字符串)
    console.log("=============JavaScript Error(错误) 对象 ================");
    try {
        // 使用了未定义的函数 "getDataList" ,执行会产生错误,catch 语句块会输出该错误的信息, finally 块无论是否发生错误都会执行.
        getDataList("Welcome");
    } catch (err) {
        // ReferenceError: getDataList is not defined
        console.log(err.name + ": " + err.message);
    } finally {
        console.log("无论是否发生异常,我都会执行输出.")
    }

JSON 对象

JavaScript JSON | 菜鸟教程

1、JSON (JavaScript Object Notation)--JS 对 象导航,是一种轻量级的数据交换格式

2、JSON采用完全独立于语言的文本格式,是理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

3、在 JavaScript 中处理 JSON 数据不须要任何特殊的 API 或工具包,可以直接使用。JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。文本可以被任何编程语言读取及作为数据格式传递。

4、Java 后台操作 Json 较常用的类库有:net-sf-JsonGsonJacksonFastJson 等,其中 Gson 与FastJson 无疑是其中的佼佼者之一

JSON 语法

1、JSON 语法是 JavaScript 对象表示语法的子集,可以直接使用。

2、一个花括号表示一个JSON对象,{}表示一个JSON对象,[{}] 表示json数组

3、键与值用冒号分隔,每个数据之间用逗号分隔;

4、使用方括号保存 JSON 数组,数组值使用“,”分割;

5、JSON 数据使用’”键”:”值”’ 形式,其中键名必须是字符串,而值 可以是以下任意类型:1)数值(整数,浮点数)2)字符串(在双引号中)3)逻辑值(true/false)4)数组(在方括号中)5)对象(在花括号中)

var obj = {a: 'Hello', b: 'World'}; //这是一个js对象,注意js对象的键名也是可以使用引号包裹的,这里的键名就不用引号包含
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

 6、JSON(格式字符串) 和 JS 对象(也可以叫JSON对象 或 JSON 格式的对象)使用SON.parse 和 JSON.stringify 进行转换。

JSON 对象 CRUD

1、在 Java 后台使用 Gson、FastJson 等库来操作 JSON 是非常方便的,前台 JS 中有时也需要进行 创建JSON对象,然后 增加、修改、删除、查看等操作。

var jsonObj = {} ;json 对象创建
jsonObj.key = value;
jsonObj["key"] = value;

json 对象添加属性,两种方式,推荐第二种 [ key ]

如果 key 已经存在,则自动覆盖.

delete jsonObj .key;json 对象删除属性,如 删除 name 属性 delete jsonObj.name;

var x = jsonObj.key;

var y = jsonObj["key"]

json 对象获取属性,有 [key]、.key 两种方式;

key 不存在时返回 undefined

JSON.stringify(value[, replacer[, space]])

1、将 json  对象或者 json 数组转换为 JSON 字符串。
2、参数说明:value:必需, 要转换的 JavaScript 值(通常为对象或数组)。返回包含 JSON 文本的字符串。

JSON.parse(text[, reviver])

1、用于将一个 JSON 字符串转换为 JSON 对象

2、参数说明:text:必需, 一个有效的 JSON 字符串、reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
3、返回给定 JSON 字符串转换后的对象。

https://gitee.com/wangmx1993/web_app/blob/master/src/main/resources/static/JsonTest.html

异常处理:XML Parsing Error:not well-formed

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值