字符串练习
题目
var str = ‘abaasdffggghhjjkkgfddssss34444343’;
- 字符串的长度
- 取出指定位置的字符串,如:0,3,5,7,9
获取数组索引:
根据位置返回字符
①charAt(index) var arr = [1,2,3,4,5,2,a];
console.log(arr.charAt(2)); // 结果返回3 ②charCodeAt(index)—返回字符的ascll码
console.log(arr.charAt(6)); // 结果是97,a的ascll码是97
③h5新增方法
console.log(arr[0]); // 结果返回1
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1cTM1IjM1EjM5AjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 查找指定字符串是否在以上字符串中存在,如:i,c,b
判断是否有该属性
var o={
age:18
}
if(o[‘age’]){
(‘里面有该属性’)
}else{
(‘里面没有该属性’)
}
if (str['i']) {
console.log('3.里面有i');
} else {
console.log('3.里面没i');
}
if (str['c']) {
console.log('3.里面有c');
} else {
console.log('3.里面没c');
}
if (str['b']) {
console.log('3.里面有b');
} else {
console.log('3.里面没b');
}
- 替换指定字符串,如:g换为22,ss换为b
获取数组索引:
根据字符返回位置
①indexOf(要查找的字符,起始位置)返回第一个符合条件的数组元素索引
var arr = [1,2,3,4,5,2];
console.log(arr.indexOf(2)); // 结果返回2,第一个符合条件
console.log(arr.indexOf(2,2)); // 查找2,从第二个开始查找
②lastIndexOf返回最后一个符合条件的数组元素索引
console.log(arr.lastindexOf(2)); // 结果返回5,最后一个符合条件
如果查无此寻,则会返回-1.
replace(‘被替换的字符’,‘替换为的字符’)
他只会替换第一个字符,想要多个替换可用循环
var str = ‘andy’;
log(str.replace(‘a’,‘b’)); // 结果为bndy
var str1 = 'abaasdffggghhjjkkgfddssss34444343';
var str2 = 'abaasdffggghhjjkkgfddssss34444343';
while (str1.indexOf('g') !== -1) {
str1 = str1.replace('g', '22');
}
while (str2.indexOf('ss') !== -1) {
str2 = str2.replace('ss', 'b');
}
console.log('4.' + str1);
console.log('4.' + str2);
- 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
substr(‘截取的起始位置’,‘截取几个字符’);
var str = ‘改革春风吹满地’;
log(str.substr(2,2)); // 结果是春风
- 找出以上字符串出现次数最多的字符和出现的次数
var str3 = 'abaasdffggghhjjkkgfddssss34444343';
var o = {};
for (let j = 0; j < str3.length; j++) {
// 这里变量sb为字符串str的第j位字符
sb = str[j];
// 查找对象o里有没有该属性,如果没有则赋值为1,如果有则自加1
if (o[sb]) {
o[sb]++;
} else {
o[sb] = 1;
}
}
console.log(o);
// max为属性值
// ch为属性名
var max = 0;
var ch = 0;
for (const key in o) {
if (max < o[key]) {
max = o[key];
ch = key;
}
}
console.log('6.the more times' + max);
console.log('6.the more name' + ch);
</script>
复习对象知识点
对象
概念:是一个具体的事物,js中,对象是一组无序的相关“属性”和“方法”的集合。
属性:事物的特征,在对象中用属性来表示
方法:事物的行为,在对象中用方法来表示
创建:
(1)用字面量创建对象: var obj = {
name: ‘张三’,
age: 18,
sex: ‘男’,
sayHi: function(){
console.log('Hi~);
} };
①里面的属性或者方法我们采取键值对的形式,键 属性名:值 属性值
②多个属性或者方法中间用逗号隔开
③方法冒号后面跟的是一个匿名函数
(2 )用new Object创建对象: var obj = new Object(); <—这里的O要大写 obj.uname = ‘lili’; obj.age = 18; obj.sayHi = function(){
console.log(hi~); }
①利用等号 = 赋值的方法,添加对象的属性和方法
②每个属性和方法之间用分号结束
(3)用构造函数创建对象 一次创建一个对象,里面很多属性和方法是大量相同的,只能复制。 因此可以利用函数的方法,重复这些相同的代码,我们就把这个函数称为构造函数。 这些函数里面封装的不是普通代码,而是对象。
构造函数,就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面。
function Love(uname, sex, age) { this.name = uname; this.age = age; this.sex = sex; this.sing = function(song) { console.log(song); } // 这里别忘记添加形参以便接收实参传来的参数 } var daodao = new Love('刀刀', '男', 18); // console.log(typeof daodao); 结果是undefined。调用返回的结果是一个对象 console.log(daodao.name); console.log(daodao['age']); daodao.sing('送');
①构造函数首字母必须大写 ②构造函数不需要return就能返回结果 ③调用构造函数必须使用new ④只要new Love()调用函数就创建了一个对象 daodao{} ⑤属性和方法前面必须添加this
※拓展:变量、属性、函数、方法的区别;构造函数与对象的关系
使用:
(1)调用对象的属性可以采取 对象名.属性名——consol.log(obj.name);
(2)调用对象的属性可以采取 对象名[‘属性名’] (3)调用对象的方法采取 对象名.方法名(别忘了加括号)——obj.sayHi()
new关键字
(1)在内存中创建一个新的空对象
(2)让this指向这个新的对象
(3)执行构造函数里的代码,给这个新的空对象添加属性和方法
(4)返回这个新对象(所以不需要return)
for…in遍历对象——for(变量 in 对象){}
for (var k in obj) {
console.log(k); // k是变量,输出得到的是属性名
console.log(obj[k]); // 输出得到的是属性值
}
- 变量和属性的相同点,他们都是用来存储数据的
变量和属性的不同点:
(1)变量:单独声明并赋值,使用的时候直接写变量名,单独存在
(2)属性:在对象里,不需要声明,使用的时候必须是 对象.属性
- 函数和方法的相同点,都是实现某种功能,做某件事
函数和方法的不同点:
(1)函数是单独声明并且调用的,函数名(),单独存在的
(2)方法在对象里面,调用的时候 对象.方法()
构造函数与对象的关系
(1)构造函数泛指某一大类,如苹果,老师
(2)对象实例特质某一事物,如青苹果,给我上课的网页老师