二十六、对象

二十六、对象

26.1 概念

对象用 {}来表示,内部是 k:v 的形式,每组k:v之间用,隔开。

1
2
3
4
5
6
7
8
<script>
var obj = {
beijing : 32,
guangzhou : 43,
nanjing : 35
}
console.log(obj);
</script>

obj就是一个对象。对象英语为object,变量一般叫做obj,或者前后缀为obj。

对象某种意义上就是一个“有键名”的数组。 数组只关心值的顺序,对象关心的是值的映射,容易看出每项的意义。

反过来说,数组是“简化版”的对象。对象的键名可以任意指定,但是数组的键名只能是0、1、2、3、……。比如PHP中,就没有对象的概念,而是“别名数组”的概念。

点语法和方括号都可以单独访问一个值,我们叫做属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
var obj = {
beijing : 32,
guangzhou : 43,
nanjing : 35
}
console.log(obj); // {beijing: 32, guangzhou: 43, nanjing: 35}
console.log(obj.guangzhou); // 43
console.log(obj["guangzhou"]); // 43
var m = "guangzhou";
console.log(obj[m]); // 43
console.log(obj["m"]); // undefined
console.log(obj.m); // undefined
</script>

UPcSEV.png

26.2 JSON

JSON叫做JavaScript object Notation “JavaScript 对象表示法”。

JSON就是所有属性名有引号的对象

1
2
3
4
5
var obj = {
"beijing" : 32,
"guangzhou" : 43,
"nanjing" : 35
}

JSON一定是对象,对象不一定是JSON。

任何值都可以和任何值产生映射:

  • 当标识符符合命名规范时,可以使用方括号和点语法来表示属性

  • 当标识符不符合命名规范时,只能使用方括号来表示属性

1
console.log(obj["guangzhou"]);

26.3 对象的遍历

1
2
3
4
5
6
7
8
9
10
<script>
var obj = {
a : 1,
b : 2,
c : 3
}
for(var k in obj){
console.log(obj[k]);
}
</script>

UPcGDI.png

26.4 算法题

例1:统计数组中水果出现的次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
var arr = ["西瓜","苹果","香蕉","西瓜","苹果","西瓜","西瓜","苹果","西瓜","苹果","西瓜","苹果","西瓜","苹果","西瓜","西瓜","西瓜","西瓜","西瓜","苹果","香蕉"];
// 辅助对象
var obj = {}
// 遍历数组,给对象加键 in表示判断某属性是否存在于对象中,in返回布尔值
for (var i = 0 ; i < arr.length ; i ++){
// 如果arr[i]不在 obj中,就在obj中创建一个,值为 1 ,如果在,则值累加
if (!(arr[i] in obj)){
obj[arr[i]] = 1;
}else{
obj[arr[i]] ++;
}
}
console.log(obj);
</script>

UPcdPS.png

例2:统计字符串中出现次数最多的字母

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
var str = "qwsasqwasaqswawsqawqswaqswaqswawqssaqaqasassasasswwwwwsqqsqsqqsqsqssqawwawaawqwq";
var obj = {};
for (var i = 0 ; i < str.length ; i++){
if(!(str[i] in obj)){
obj[str[i]] = 1;
}else{
obj[str[i]]++;
}
}
console.log(obj);
// 比较大小
var max = 0;
var maxchar = "";
for (var k in obj){
if(obj[k] > max){
max = obj[k];
maxchar = k
}
}
console.log("字母" + maxchar + "出现次数最多," + "为" + max + "次");
</script>

UPcybq.png

点击查看

本文标题:二十六、对象

文章作者:Mango

发布时间:2020年07月08日 - 22:01:16

最后更新:2020年07月08日 - 22:35:39

原始链接:https://mango185.github.io/post/c2686467.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------