JavaScript数据类型继续学习

JavaScript继续学习

1.对象

若干个键值对定义对象的属性,用{}包起来

image-20211012230315441

用 'var' 定义对象,键值对描述属性xxx:xxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!

(注:JavaScript中所有的键都是字符串,值是任意对象)

1.对象赋值

image-20211012230723774

在浏览器Console可以直接赋值修改

2.使用一个不存在的对象属性,不会报错!只会出现 undefined

image-20211012230906630

3.动态的删减属性

delete person.name
true
person

4.动态的添加,直接给新的属性添加值就可以生成了

image-20211012231409712

5.诊断属性值是否在这个对象中'xxx' in xxx

属性要用''包起来

image-20211012232309512

6.判断一个属性是否是这个对象自身拥有的hasOwnProperty('toString')

image-20211012232637480

2.流程控制

if 判断

image-20211012233917456

for循环

for(let i=0;i<100;i++){
    
    comsole.log(i)
}

这里和Java中的一样只有局部变量的声明用的是let

forEach循环

var age=[12,3,12,3,12,3,12,31,23,123];
//函数,其实和Java中的方法一样的
age.forEach(function (value){
    console.log(value)
})

这是个专门遍历数组的函数,依次把每个数值赋给value

for...in

for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'
}
//for(var index in object),定义变量in对象
for(var num in age){
    if(age.hasOwnProperty(num)){
        console.log("存在")
        console.log(age[num])
    }
}
//要过滤掉对象继承的属性,用hasOwnProperty()来实现:

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    if (o.hasOwnProperty(key)) {
        console.log(key); // 'name', 'age', 'city'
    }
}

这种我们可以用于不知道数组的具体长度时,num会从0开始一直到数组长度减1,就是下标

这样我们可以通过num直接遍历数组

3.Map和Set

Map:

//ES6 Map这是es6的新特性
//学生成绩,学生名字
//var name=["tom","jack","locy"];
//var score=[100,90,80]

var map=new Map([['tom',100],['jack',90],['locy',80]]);
var name=map.get('tom');//通过key获得value
map.set('admin',1234);//新增成员,或者修改
map.delete("tom");//删除

//初始化Map需要一个二维数组,或者直接初始化一个空Map。Map具有以下方法:

var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
//由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88

Set:无序不重复的集合

set.add(2);//添加
set.delete(1);//删除
console.log(set.has(3));//是否包含某个元素![img]
/*Set
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。*/

//要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set:

var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3
//重复元素在Set中自动被过滤:

var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
//注意数字3和字符串'3'是不同的元素。

//通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果:

s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}
//通过delete(key)方法可以删除元素:

var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}

4.iterator

Screenshot_20211013_230943_com.android.gallery3d

Screenshot_20211013_230857_com.android.gallery3d

Screenshot_20211013_230918_com.android.gallery3d

其实就是for(let index of object),这个可以直接遍历不像for in是遍历下标再通过下标遍历对象

然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:

'use strict';
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
    console.log(element + ', index = ' + index);
});

```SetArray类似,但Set`没有索引,因此回调函数的前两个参数都是元素本身:

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    console.log(element);
});

Map的回调函数参数依次为valuekeymap本身:

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});

如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Arrayelement

var a = ['A', 'B', 'C'];
a.forEach(function (element) {
    console.log(element);
});

``

这里推荐一个学习Java和JavaScript的网站,免费的里面有Java和JavaScript的详细教程,适合平时没事的时候看一看

点击这里看网站

JavaScript的数据类型这里就学完了,下面会学习函数及面向对象

posted @ 2021-10-13 23:23  Ember00  阅读(38)  评论(0)    收藏  举报