JavaScript基础——5
1、二维数组(可理解为矩阵):
[1,2,3,4,5,6]
[7,8,9,2,3,4]
[2,4,5,6,7,8]
创建方法:
//第一种方法
let arr = [6];
for(let i = 0; i < arr.length; i++){ //arr.length为列数 这表示6列 因此矩阵为6x6的
arr[i] = [];
}
//第二种方法
let arr = new Array(6);
for(let i = 0; i < arr.length; i++){ //arr.length为列数 这表示6列 因此矩阵为6x6的
arr[i] = new Array(arr.length);
}
二、键值对 :狭义的对象
x:100 其中 x 叫做键名 100 为值
它的类型是object(对象):引用数据类型
let obj = {
x:100,
y:200
}
概念:成对的属性名与属性值得集合(x对应100 ; y对应200)
let obj = {
x:100,
y:200
}
let a = obj;
a.x = 200;
上面代码中虽然只改了a中的x ,但obj中的x也会变成200;
因为基本数据类型是:传值,而引用数据类型是:传址;
可理解成 a 仅仅是一个指向obj的地址,因此当更改a的健值时更改的是obj的健值。
命名规则:1、键名都会被默认为字符串(x 其实 是“x”);
2、符合变量名命名规则的不需要加 “”,反之需要加;
3、纯数字可以做键值对的名字;
访问属性:1、对象名.属性名访问形式无法访问数字命名的键;
2、对象名[属性名]的形式只能访问数字命名的键;
3、对象名[“属性名”]一定可以成功;
动态添加属性:1、对象名.属性名 = 数据;(若对象中不存在该属性,则增加一个该
属性,否则会更改该属性);
2、后绑定:js允许先创建一个空对象;
删除:delete obj.x; 若删除成功会返回一个true;
附加:with :批量修改(不建议使用),with若修改到不存在的属性会创建出一个全
局的变量,造成变量污染;
三、hasOwnProperty:优点:运行速度快; 缺点:消耗内存非常大(判断是否有属性还可以用:in )
当判断到对象中有的属性时返回一
个true,没有则为false;
附加:使用该方法去重
let arr = [1,2,35,5,165,2,65,2,165,1];
let obj = {};
//原理 先遍历数组,每遍历一个就将其存入对象obj中,然后往后遍历时判断对象中是否有该键名
//(使用了对象没有属性名时会创建一个的性质)
for(let i = 0; i < arr.length; i++){
if(obj.hasOwnProperty(arr[i] + "")){
arr.splice(i,1); //如果obj中存在数组i下标的值命名的属性时删除该下标对应得值
i--;
}
else{ //否则继续创建属性
obj[arr[i] + ""] = 0; //键值可以随便给
}
}
console.log(arr);
四、遍历对象
1、for in :
let obj = {
a:100,
b:200,
c:300,
d:400
}
obj.e = 500; //当增加属性时 依旧可以遍历出来
for(let key in obj){ //使用 in 关键字
console.log(obj[key]); //打印出所有对象属性名
}
//Object.Key()方法
console.log(Object.key(obj)); //打印出:"a","b","c","d"
//Object.getOwnProperty()方法
console.log(Object.getOwnProperty(obj)); //["a","b","c","d"]