对象补充知识点
1、对象:是一种数据类型(复合数据类型),用来存储数据。数据格式(key:value)。对象是属性和行为的结合体
2、对象的定义:
(1)使用字面量:{ }
let 对象名 = {
属性名:属性值
方法名:function(【参数】){
函数体语句
}
}
(2)使用Object:
a、let 对象名 = new Object()
对象名.属性名 = 属性值
对象名.方法名 = function(【参数】){
函数体语句
}
b、let 对象名 = new Object({
属性名:属性值
方法名:function(【参数】){
函数体语句
}
})
(3)使用构造函数创建对象
a、定义构造函数:
function 构造函数名(【参数】){
this.属性名 = 属性值
this.方法名 = function(【参数】){
函数体语句
}
}
b、创建对象
let 对象名 = new 构造函数名(【参数】)
3、对象访问属性和方法
对象名.属性名
对象名.方法名(【参数】)
对象的遍历
1、for in
key既是student对象的属性名或方法名,也是索引
var student = {
name: '张三',
age: 20
}
for (var key in student) {
console.log(student[key]);
}
2、in 运算符 查找对象里某个属性是否存在
let student = {
name: "张三",
age: 18,
gender: "男",
show: function () {
console.log("姓名:" + this.name);
}
}
for (let result in student) {
console.log(result + ": " + student[result]);
}
3、对象数组:数组中存放的是对象(数组中的每个元素都是对象)
//1.创建一个构造方法:Student
function Student(name,city){
this.name = name
this.city = city
this.html = 0 //html属性的默认值为0
this.css = 0 //css属性的默认值为0
this.show = function(){
console.log('姓名:',this.name)
console.log('城市:',this.city)
console.log('Html成绩:',this.html)
console.log('Css成绩:',this.css)
}
this.getSum = function(){
return this.html + this.css
}
}
//2.创建对象
let s1 = new Student('贾宝玉','南京')
s1.html = 78
s1.css = 69
let s2 = new Student('林黛玉','镇江')
s2.html = 85
s2.css = 90
let s3 = new Student('王熙凤','南京')
s3.html = 75
s3.css = 78
let s4 = new Student('薛宝钗','南京')
s4.html = 82
s4.css = 65
//3.定义数组:将s1~s4对象存入该数组
let arr = [s1,s2,s3,s4] //arr就是对象数组
let temp = [s1,s2,s3,s4]
console.log(temp)
//4.对数组中的对象按总成绩降序排列
for(let i=0;i<arr.length;i++){
for(let j=0;j<arr.length-1;j++){
if(arr[j].getSum() < arr[j+1].getSum()){
let t = arr[j]
arr[j] = arr[j+1]
arr[j+1] = t
}
}
}
console.log(arr)
字符串补充知识点:
String对象的常用方法:字符串名.方法名(【实参】)
(1)charAt( index ):返回字符串中index位置上的字符。参数index代表索引值(下标),若没有找到则返回空
(2)charCodeAt(index):返回字符串中index位置上的字符的Unicode编码
ASCII码:是美国做的字符编码 (’a’:97…..) ——— 只支持英文字符。表示一个字符使用1个字节(byte),即8个二进制位(bit)
Unicode码:国际标准化组织做的一套编码。表示一个字符使用2个字节,即16个二进制位(bit) —— 支持中文
ISO-8859-1码:不支持中文
GBK:支持中文
GB2312:支持简体中文
(3)concat(字符串):将两个及两个以上的字符串进行连接
(4)endsWith(字符串):判断字符串是否是以给定的子串结尾。是则返回true,不是则返回false
(5)indexOf(子串):返回子串在字符串中首次出现的位置(下标)。若返回-1,表示没有找到子串
(6)lastIndexOf(子串):返回子串在字符串中最后出现的位置(下标)
(7)includes(子串):查找字符串中是否包含指定的子串。若包含返回true,不包含返回false
(8)startsWith(子串):判断字符串是否以给定子串开头。是则返回true,不是则返回false
(9)split(分隔字符):将字符串分割成字符串数组
(10)replace(oldStr,newStr):在字符中查找oldStr第一次出现的位置,并用newStr替换它
(11)substr(start,length):截取字符串中从start开始的连续length个字符。当参数length省略时,截取从start开始到串末尾的所有字符
(12)substring(start,end):截取start到end之间的子串,不包含end
(13)trim():去掉字符串两端的空白字符
(14)trimEnd():去掉字符串末尾的空白字符
(15)trimStart():去掉字符串前面的空白字符
(16)toLowerCase():将字符串中的所有字母转换为小写字母
(17)toUpperCase():将字符串中的所有字母转换为大写字母
(18)toString():将字符串对象转换成字符串
字符串的遍历
字符串中也可以通过 字符串[下标] 的形式来访问字符串中的某一个字符
同时也可以使用 for 循环和 for of 来进行遍历。
var str = 'HEllo';
for (var i = 0; i < str.length; i++) {
console.log(str[i]);
}
for (var item of str) {
console.log(item);
}
字符串例题:
设有字符串”yekmaakkccekymbvb”,求出该字符串中有多少种字符,以及每个字符的个数
(其中的for (var key in o) {
//key得到的是属性名
//o[key] 得到的是属性值
})
// 采用对象进行处理 将字符串中的字符作为对象的属性,若对象中有这个属性(字符),让属性值加一,若没有这个属性(字符),则将该字符作为对象的属性加入
var str = 'yekmaakkccekymbvb';
let k = {}
for (let i = 0; i < str.length; i++) {
let char = str.charAt(i)
// console.log(char);
if (k[char]) { //表示对象obj有str[i]这个属性,对应的属性值加一
k[char]++
} else {
k[char] = 1
}
}
console.log(k);
let class_ = 0
for (const key in k) {
class_ ++
}
console.log(class_);
//第二种方法
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]]++
}else{
obj[str[i]] = 1
}
}
console.log(obj);