【後转前要多久】# Day24 JS - JavaScript 物件、函式

物件内可以放function

学生考了几分

var exam = {}
console.log(exam)

exam = {
    title: "数学测验",
    score: 95,
    student: "Tea",
    nickname: ["茶", "抹茶"],
    notify: function () {
        alert(exam.student + "考了" + exam.score + "分!")
    }
}
console.log(exam.notify) // 没加小括号(),只会印出 function 物件
/*
ƒ () {
        alert(exam.student + "考了" + exam.score + "分!")
    }
    */

exam.notify()

计算考试分数

var score = {
    math: 95,
    english: 80,
    chinese: 77,
    avg: function () {
        var total = score.math + score.english + score.chinese
        return total / 3
    }
}

console.log(score.avg())

多个物件组成的阵列

var scores = [
    {student: "Jason", score: 95},
    {student: "Tom", score: 90},
    {student: "Kate", score: 88},
]

console.log(scores[2].student + "考了" + scores[2].score + "分");

回圈

for

for(var i = 0; i < 10; i++){
    console.log(i);
}

for in list

var scores = [
    {student: "Jason", score: 95},
    {student: "Tom", score: 90},
    {student: "Kate", score: 88},
]


for(i = 0; i < scores.length; i++){
    console.log("学生:", scores[i].student + "考了" , scores[i].score,"分")
}

映射 Map

存放KeyValue
宣告时要用new

正确用法

var m = new Map();
m.set("name","Tea");    // 新增资料到Key中
console.log(m)
m.set("name","Pencil"); // 同样的Key後面覆盖前面
console.log(m)

console.log(m.has('name')); // true
console.log(m.get('name')); // Pencil

以下为在其他语言中看似正确,在JS里却是 错误的Map用法
(虽然可以用,但与上面的get、has就像两个世界一样毫无相干)

刚从其他语言转过来时,觉得错误用法超级合理的。

var m = new Map();
m['name'] = "Tea";
m['name'] = "Pencil";

console.log(m['name']);

不过稍微看了一下,这错误的map用法是属於Object物件的属性原生用法,
也许设计当初是怕与这搞混淆才区别开来吧。

var m =  Object();
m['name'] = "123"
console.log(m['name']);

错误用法的Key、Value会跑到属性栏位去
也许这段程序码(在Chrome console上的输出),能较容易理解两者区别:

var m = new Map();
m['name1'] = "Tea";
m['name2'] = "Pencil";

console.log("错误用法:")
console.log(m);



m.set("name1","Tea");
m.set("name2","Pencil");

console.log("加上了正确用法:")
console.log(m)

七种迭代map的写法


var m = new Map();
m.set("name1","Tea");
console.log(m)
m.set("name2","Pencil");
console.log(m)

console.log(m.size); // 2
console.log(m.keys()); // {"name1", "name2"}

for (var key of m.keys()){
    console.log(key);
}

for (var value of m.values()){
    console.log(value);
}

for (var [key, value] of m){
    console.log(key, value);
}

for (var [key, value] of m.entries()){
    console.log(key, value);
}

// 以上四种for回圈,以下三种forEach

m.forEach(function (value){
    console.log(value);
})

m.forEach(function (value, key){
    console.log(value, key);
})

m.forEach(function (value, key, map){
    console.log(value, key, map);
})

<<:  D24 - 彭彭的课程# Python 网路连线程序、公开资料串接(2)

>>:  Day27-D3 进阶图表:甜甜圈图

Golang - Gin 上传/下载档案注意事项&Tips

工作需求每次都被上传/下载档案搞得很烦 每次用完然後每次就忘记 刚好发一篇整理起来,以後有机会可以用...

【在厨房想30天的演算法】Day 28 资讯安全与演算法 : 讯息监别码

Aloha!又是我少女人妻 Uerica!今天我家狗狗总算没有一大早叫我起床了,可能之前累爆昨夜一路...

Day30 撒花~

大家好,我是乌木白,今天是铁人赛最後一天,谢谢大家在这些天不管是无意或是有意的点进来参观,都非常感...

【Day 24】建立 EKS on Outpost 的步骤(上)

tags: 铁人赛 AWS Outposts EKS Kubernetes 前情提要 昨天稍微提及了...

Day 0x11 - 建立信用卡付款的订单

0x1 前言 之前都是建立付款方式为 ATM 的订单,另一个信用卡的流程都没跑过,今天就是要来跑一下...