目录
一、字符串
1、字符串的创建方式:
(1)直接创建
var 变量名 = "字符串"
例如:var str = "一二三四五"
(2)通过String对象创建
var str = new String('apple'); // 创建字符串对象
console.log(str); // 输出结果:String {"apple"}
console.log(str.length); // 获取字符串长度,输出结果:5
2、字符串默认的属性
length,用来记录字符串的长度
3、方法
字符串对象提供了用于检索元素的属性和方法,字符串对象的常用属性和方法
(1)根据字符返回位置
indexOf(value):返回参数value在字符串中首次出现的位置。若返回-1表示未找到value
lastIndexOf(value):返回参数value在字符串中最后出现的位置
| indexOf(searchValue) | 获取searchValue在字符串中首次出现的位置 |
| lastIndexOf(searchValue) | 获取searchValue在字符串中最后出现的位置 |
var str = 'HelloWorld';
str.indexOf('o'); // 获取“o”在字符串中首次出现的位置,返回结果:4
str.lastIndexOf('o'); // 获取“o”在字符串中最后出现的位置,返回结果:6
//要求在一组字符串中,找到所有指定元素出现的位置以及次数。
//字符串为 ' Hello World, Hello JavaScript '。
var str = 'Hello World, Hello JavaScript';
var index = str.indexOf('o');
var num = 0;
while (index != -1) {
console.log(index); // 依次输出:4、7、17
index = str.indexOf('o', index + 1);
num++;
}
console.log('o出现的次数是:' + num); // o出现的次数是:3
(2)根据位置返回字符
charAt(index):返回index位置上的字符
charCodeAt(index):返回index位置上的字符的ASCII码值
| 0 | 48 |
| a | 97 |
| A | 65 |
| 空格 | 32 |
str[index]:H5中新增的方法.把字符串看作是数组
var o = {} //表明变量o是一个对象.对象保存数据的格式是
{属性名}
str = 'Apple'
o={
'A':1,
'P':2,
'l':1,
'e':1
}
| charAt(index) | 获取index位置的字符,位置从0开始计算 |
| charCodeAt(index) | 获取index位置的字符的ASCII码 |
| str[index] | 获取指定位置处的字符(HTML5新增) |
var str = 'HelloWorld';
var str = 'Apple';
console.log(str.charAt(3)); // 输出结果:1
console.log(str.charCodeAt(0)); // 输出结果:65(字符A的ASCII码为65)
console.log(str[0]); // 输出结果:A
//使用charAt()方法通过程序来统计字符串中出现最多的字符和次数。
var str = 'Apple';
// 第1步,统计每个字符的出现次数
var o = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // 利用chars保存字符串中的每一个字符
if (o[chars]) { // 利用对象的属性来方便查找元素
o[chars]++;
} else { o[chars] = 1; }
}
console.log(o); // 输出结果:{A: 1, p: 2, l: 1, e: 1}
// 第2步, 统计出现最多的字符
var max = 0; // 保存出现次数最大值
var ch = ''; // 保存出现次数最多的字符
for (var k in o) {
if (o[k] > max) {
max = o[k];
ch = k;
}
}
// 输出结果:“出现最多的字符是:p,共出现了2次”
console.log('出现最多的字符是:' + ch + ',共出现了' + max + '次');
(3)字符串操作方法
字符串对象提供了一些用于截取字符串、连接字符串、替换字符串的属性和方法。字符串对象的常用属性和方法
| concat(str1,str2,...) | 连接多个字符串 |
| slice(start,[end]) | 截取从start位置到end位置之间的一个子字符串 |
| substring(start,[end]) | 截取从start位置到end位置之间的一个子字符串,基本和slice相同,但是不接收负值 |
| substr(start,[length]) | 截取从start位置开始到length长度的子字符串 |
| toLowerCase() | 获取字符串的小写形式 |
| toUpperCase() | 获取字符串的大写形式 |
| split(seq,[,limit]) | 使用separator分隔符将字符串分隔成数组,limit用于限制数量 |
| replace(str1,str2) | 用str2替换str1 |
var str = 'HelloWorld';
str.concat('!'); // 在字符串末尾拼接字符,结果:HelloWorld!
str.slice(1, 3); // 截取从位置1开始包括到位置3的范围内的内容,结果:el
str.substring(5); // 截取从位置5开始到最后的内容,结果:World
str.substring(5, 7); // 截取从位置5开始到位置7范围内的内容,结果:Wo
str.substr(5); // 截取从位置5开始到字符串结尾的内容,结果:World
str.substring(5, 7); // 截取从位置5开始到位置7范围内的内容,结果:Wo
str.toLowerCase(); // 将字符串转换为小写,结果:helloworld
str.toUpperCase(); // 将字符串转换为大写,结果:HELLOWORLD
str.split('l'); // 使用“l”切割字符串,结果:["He", "", "oWor", "d"]
str.split('l', 3); // 限制最多切割3次,结果:["He", "", "oWor"]
str.replace('World', '!'); // 替换字符串,结果:"Hello!"
二、值类型和引用类型
1、值类型
简单的数据类型(String、Number、Boolean、undefined、null)又称值类型
2、引用类型
复杂数据类型(对象)又称为引用类型。引用类型的特点是,变量中保存的仅仅是一个引用的地址,当对变量进行赋值时,并不是将对象复制了一份,而是将两个变量指向了同一个对象的引用
var student = {
name: '小王',
gender: '男',
age: 12
};
var s2 = student; //将对象的地址赋给s2
student = {id:1234,address:'杭州'}
//代码中的obj1和obj2指向了同一个对象
// 创建一个对象,并通过变量obj1保存对象的引用
var obj1 = { name: '小明', age: 18 };
// 此时并没有复制对象,而是obj2和obj1两个变量引用了同一个对象
var obj2 = obj1;
// 比较两个变量是否引用同一个对象
console.log(obj2 === obj1); // 输出结果:true
// 通过obj2修改对象的属性
obj2.name = '小红';
// 通过obj1访问对象的name属性
console.log(obj1.name); // 输出结果:小红
obj1和obj2两个变量引用了同一个对象,此时,无论是使用obj1操作对象还是使用obj2操作对象,实际操作的都是同一个对象。
3、函数的参数是对象
当obj1和obj2两个变量指向了同一个对象后,如果给其中一个变量(如obj1)重新赋值为其他对象,或者重新赋值为其他值,则obj1将不再引用原来的对象,但obj2仍然在引用原来的对象。
var obj1 = { name: '小明', age: 18 };
var obj2 = obj1;
// obj1指向了一个新创建的对象
obj1 = { name: '小红', age: 17 };
// obj2仍然指向原来的对象
console.log(obj2.name); // 输出结果:小明
注意:当一个对象只被一个变量引用的时候,如果这个变量又被重新赋值,则该对象就会变成没有任何变量引用的情况,这时候就会由JavaScript的垃圾回收机制自动释放。
若在函数体中修改了对象的属性值,则在函数外部访问该对象时,得到的是修改后的对象的值。
function change(obj) {
obj.name = '小红'; // 在函数内修改了对象的属性
}
var stu = { name: '小明', age: 18 };
change(stu);
console.log(stu.name); // 输出结果:小红
https://blog.csdn.net/Han_Zhou_Z/article/details/121386812?spm=1001.2014.3001.5502

1188

被折叠的 条评论
为什么被折叠?



