前言
array中可以装大量数据,能装大量数据的,叫容器。在JS中,除了数组容器之外,还有对象容器。
提示:以下是本篇文章正文内容,下面案例可供参考
一、创建一个对象
创建一个对象也有两种方式:
1)字面量创建 var obj = {} 一个{}在JS中就表示一个对象
2)new Object也可以创建 var obj = new Object(); Object在构造器,在其它语言叫类
<script>
// 字面量创建 用的比较多
// 在JS中,对象是属性的无序集合
// 集合:容器 放大量的数据
// 无序:属性是无序
var obj1 = {
name:"wc", // name:"wc"叫属性 name叫属性名 "wc"叫属性值 键值对
age:100,
score:88,
address:"bj"
}
// .属性访问运算符
// 就是用来访问一个对象上面的属性的 str.length arr.push
console.log(obj1.name);
// new Object也可以创建
// var obj2 = new Object()
</script>
结果如下:
二、对象的操作
增:向对象中添加一个属性
删:删除对象里面的某个属性
改:修改对象里面的某个属性
查:获取对象中的某个属性
1…语法
点语法: .叫属性访问运算符 用的最多的
增: 对象名.属性名 = 属性值
删: delete 对象名.属性名 delete是用来删除一个对象中的属性的 delete是运算符
改: 对象名.属性名 = 新的属性值
查: 对象名.属性名 如果去获取一个属性,但是这个属性没有,得到undefined
代码如下(示例):
增:
<script>
let obj = {}; // 创建一个空对象 空对象是指里面没有任何的属性
obj.name = "wc"; // 向对象中添加一个属性
obj.age = 110;
console.log(obj);
</script>
结果如下:
删:
<script>
let obj = {}; // 创建一个空对象 空对象是指里面没有任何的属性
obj.name = "wc"; // 向对象中添加一个属性
obj.age = 110;
delete obj.age; // 删除obj中的age属性
console.log(obj);
</script>
结果如下:
改:
<script>
let obj = {}; // 创建一个空对象 空对象是指里面没有任何的属性
obj.name = "wc"; // 向对象中添加一个属性
obj.age = 110;
delete obj.age; // 删除obj中的age属性
obj.name = "xq"; // 修改
console.log(obj);
</script>
结果如下:
查:
<script>
let obj = {}; // 创建一个空对象 空对象是指里面没有任何的属性
obj.name = "wc"; // 向对象中添加一个属性
obj.age = 110;
delete obj.age; // 删除obj中的age属性
obj.name = "xq"; // 修改
console.log(obj);
console.log(obj.name);
console.log(obj.address);//已经被删除,没有这个元素,就是undefined
</script>
结果如下:
2.[]语法
[]语法: 看到[],先想到数组,但是在对象中也可以使用[]
增: 对象名[“属性名”] = 属性值
删: delete 对象名[“属性名”]
改: 对象名[“属性名”] = 新的属性值
查: 对象名[“属性名”]
代码如下(示例):
增:
<script>
let obj = new Object(); // 创建一个对象
obj["name"] = "xixi"
obj["age"] = 666;
console.log(obj);
</script>
结果如下:
删:
<script>
let obj = new Object(); // 创建一个对象
obj["name"] = "xixi"
obj["age"] = 666;
console.log(obj);
delete obj["age"];
console.log(obj);
</script>
结果如下:
两种方式的区别:
相同之处:
<script>
var obj = {name:"wc",age:100}
console.log(obj.name);
console.log(obj["name"]);
</script>
结果如下:
不同之处:
<script>
let obj = new Object(); // 创建一个对象
obj["name"] = "xixi"
obj["age"] = 666;
console.log(obj);
// a是一个变量 变量的值是一个字符串
var a = "name";
// 要求,需要通过a访问对象中的属性
console.log(obj.a); // 表示访问obj对象中的a属性
console.log(obj[a]);
</script>
结果如下:
三、对象的遍历
<script>
// 对象的遍历
var obj = {name:"wc",age:100,score:88,address:"bj"}
// obj中没有length
// console.log(obj.length);
// 不能使用for循环遍历对象
// 在JS中可以使用for in对对象进行遍历
for (var key in obj) {
console.log(key,obj[key]);
}
</script>
结果如下:
四、对象的小练习
统计一个字符串中每一个字符出现的次数
统计一个字符串中每一个字符出现的次数,例:
var str = “hello world”;
{
h:1,
e:1,
l:3,
…
}
<script>
var str = "befasdbbbbbbbbewwwwwwwwwwwssssssssfffffffscccccccsfasdewr";
let obj = {}; // 空对象
for(var i=0; i<str.length; i++){
var s = str[i];
if(obj[s]){
obj[s]++
}else{
obj[s] = 1; // {b:1,e:1,f:1,a:1,s:1,d:1}
}
}
console.log(obj);
</script>
结果如下:
统计出出现最多的那个字符
<script>
// 统计出出现最多的那个字符?
var str = "befasdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbewwwwwwwwwwwwwwssssssssfffffffscccccccsfasdewr";
let obj = {}; // 空对象
for(var i=0; i<str.length; i++){
var s = str[i];
if(obj[s]){
obj[s]++
}else{
obj[s] = 1; // {b:1,e:1,f:1,a:1,s:1,d:1}
}
}
// console.log(obj);
var max = 0;
var char = "";
for (var key in obj) {
obj[key]
if(obj[key] > max){
max = obj[key]
char = key;
}
}
console.log(char,max);
</script>
结果如下:
如果一样多,都要找出来
<script>
// 如果一样多,都要找出来
var str = "aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbcccccccccccccccccdsfasdf";
let obj = {}; // 空对象
for(var i=0; i<str.length; i++){
var s = str[i];
if(obj[s]){
obj[s]++
}else{
obj[s] = 1; // {b:1,e:1,f:1,a:1,s:1,d:1}
}
}
console.log(obj);
var max = 0;
var char = "";
for (var key in obj) {
if(obj[key] === max){
char += key
}
if(obj[key] > max){
max = obj[key]
char = key;
}
}
console.log(char,max);
</script>
结果如下: